Съдържание
В MS Excel често ни се налага да търсим или намираме стойности в набора от данни. Това може да бъде намиране на данни в редовете или колоните. За щастие Excel предоставя различни функции и формули за изпълнение на тези задачи. С помощта на Excel VBA код можем да автоматизираме тази задача за търсене или намиране на стойности. В тази статия ще видим различни начини за намиране на стойност в колона в Excel VBA.
Изтегляне на работна тетрадка за практика
Намиране на стойност в Column.xlsm6 примера за VBA за намиране на стойност в колона в Excel
Нека имаме набор от данни с информация за продукти с техните Идентификатор на продукта , Марка , Модел , Единична цена , и Идентификатор на поръчката Нашата задача е да открием съвпадащите Идентификатор на поръчката . Сега нашата задача е да открием Идентификатор на поръчката свързани с Идентификатор на продукта .
1. Намиране на стойност в колона чрез функцията VBA Find
В първия пример ще използваме Функция Намиране във VBA за намиране на стойност в дадена колона.
📌 Стъпки:
- Отидете на името на листа в долната част на листа.
- Натиснете десния бутон на мишката.
- Изберете Вижте кода опция от списъка.
- Отваря се прозорецът VBA. След това изберете Модул от Вмъкване на опция
- Сега напишете следния код в конзолата VBA
Sub Find_Value() Dim ProductID As Range Range("D4").ClearContents Set ProductID = Range("B8:B19").Find(What:=Range("C4").Value, _ LookIn:=xlValues, LookAt:=xlWhole) If Not ProductID Is Nothing Then Range("E5").Value = ProductID.Offset(, 4).Value Else MsgBox "No Matched Data Found !!" End If End Sub
- Сега Вмъкнете бутон в набора от данни.
- Отидете в Разработчик таб.
- Изберете Бутон ( Контрол на формата ) от Вмъкване на раздел.
- Дайте каквото и да е име на бутона. Например аз го давам като Търсене .
- Присвояване на кода на този бутон.
- Изберете бутона и натиснете десния бутон на мишката.
- Изберете Присвояване на макрос от списъка.
- Изберете желания макрос от Присвояване на макрос прозорец.
- След това натиснете OK .
- Сега напишете всеки Идентификатор на продукта и кликнете върху Търсене бутон.
Виждаме, че не се показва съвпадение, тъй като този номер на продукта не е в списъка.
- Поставете друг Идентификатор на продукта и отново натиснете бутона Търсене бутон.
Получаваме номера на поръчката за дадения Идентификатор на продукта .
Прочетете още: Как да получите стойността на клетката по ред и колона в Excel VBA
2. VBA за намиране на стойност от различни работни листове
Сега в този раздел ще направим същото, но за различни работни листове. Нека предположим, че информацията за продукта ни е в Лист 2 , а полето за търсене е в Лист 3 . Сега ще напишем кода VBA, за да можем да търсим ID на поръчката, като използваме ID на продукта от Лист 3 .
Лист 2:
Лист3:
📌 Стъпки:
- Следвайте същите стъпки от стъпка 1 към стъпка 2 от предишния метод, за да отворите конзолата VBA
- Сега напишете следния код в конзолата VBA
Sub Find_Value_from_worksheets() Dim rng As Range Dim ProductID As String Dim rownumber As Long ProductID = Sheet3.Cells(4, 3) Set rng = Sheet2.Columns("B:B").Find(What:=ProductID, _ LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, _ SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False) rownumber = rng.Row Sheet3.Cells(5, 5).Value = Sheet2.Cells(rownumber, 6).Value End Sub
- Сега отново вмъкнете бутон като предишния.
- След това задайте макрокода на бутона.
- Въведете всички Идентификатор на продукта и кликнете върху Изпълнение на бутон
Прочетете още: Търсене на стойност в колона и връщане на стойност на друга колона в Excel
3. Намиране и маркиране на стойност в колона
Нека да видим как можем да открием стойности от дадена колона, като ги маркираме. За целта нека приемем същото множество от данни по-горе с допълнителна колона, наречена Статус на доставка . Сега нашата задача е да маркираме стойностите в Статус на доставка колона, които са В очакване .
📌 Стъпки:
- Следвайте същата стъпка от стъпка 1 към стъпка 2 както при предишния метод за отваряне на конзолата VBA
- Сега напишете следния код в конзолата VBA
Sub Find_and_Mark() Dim strAddress_First As String Dim rngFind_Value As Range Dim rngSrch As Range Dim rng_Find As Range Set rng_Find = ActiveSheet.Range("G1:G16") Set rngSrch = rng_Find.Cells(rng_Find.Cells.Count) Set rngFind_Value = rng_Find.Find("Pending", rngSrch, xlValues) If Not rngFind_Value Is Nothing Then strAddress_First = rngFind_Value.Address rngFind_Value.Font.Color = vbRed Do SetrngFind_Value = rng_Find.FindNext(rngFind_Value) rngFind_Value.Font.Color = vbRed Цикъл до rngFind_Value.Address = strAddress_First End If End Sub
- Сега отидете в работния лист и стартирайте кода.
- Вижте резултатите в таблицата.
Прочетете още: Как да намерите най-високата стойност в колона на Excel (4 метода)
4. VBA за намиране на стойности в колона с помощта на заместващи символи
Накрая ще видим как можем да търсим или намираме стойности в колони, като използваме заместващи знаци в Excel VBA. Отново ще използваме същата съвкупност от данни по-горе за този метод. Нашата задача е да намерим цените на продуктите, като използваме техния модел. Можем да въведем пълното име или последните/първите знаци на Идентификатор на продукта .
📌 Стъпки:
- Следвайте същата стъпка от стъпка 1 към стъпка 2 както при предишния метод за отваряне на конзолата VBA
- Сега напишете следния код в конзолата VBA
Sub Find_Using_Wildcards() Set myerange = Range("B5:G16") Set ID = Range("D19") Set Price = Range("F20") Price.Value = Application.WorksheetFunction.VLookup _ ("*" & Range("D19") & "*", myerange, 4, False) End Sub
- Отново вмъкнете бутон като предишния.
- Сега задайте макрокода на бутона.
- Сега въведете всяка частична Идентификатор на продукта и натиснете бутона Изпълнение на бутон.
Прочетете още: Как да намерите най-ниската стойност в колона на Excel (6 начина)
5. Excel VBA за намиране на максимална стойност в колона
Тук искаме да намерим максималната стойност на дадена колона, като използваме кода VBA.
📌 Стъпки:
- Искаме да разберем каква е максималната цена.
- Сега поставете следния код VBA в нов модул.
Sub Column_Max() Dim range_1 As Range Set range_1 = Application.InputBox(prompt:="Select Range", Type:=8) Max_Column = WorksheetFunction.Max(range_1) MsgBox Max_Column End Sub
- След това натиснете бутона F5 за да стартирате кода VBA.
- Сайтът Вход се появява диалогов прозорец.
- Изберете обхвата от набора от данни.
- Накрая натиснете бутона OK бутон.
Виждаме, че максималната стойност е показана в диалоговия прозорец.
6. Excel VBA за намиране на последната стойност в колона
Тук искаме да знаем стойността на последния ред или клетка от определена колона. Например искаме да знаем последния продукт от колоната Product
📌 Стъпки:
- Въведете VBA код по-долу в модула.
Sub last_value() Dim L_Row As Long L_Row = Cells(Rows.Count, "B").End(xlUp).Row MsgBox Cells(L_Row, 2).Value End Sub
- След това стартирайте кода, като натиснете бутона F5 бутон.
Последната стойност се показва в диалоговия прозорец.
Прочетете още: Как да намерите последното появяване на стойност в колона в Excel (5 метода)
Нещата, които трябва да запомните
Някои често срещани грешки:
- Грешка: Една стойност наведнъж. Защото НАМЕРЕТЕ Методът може да намери само една стойност в даден момент.
- Грешка: #NA в VLOOKUP Ако търсената стойност не присъства в дадената съвкупност от данни, функцията ще върне това #NA грешка.
- Range("Cell_Number").ClearContents се използва за изтриване на предишната стойност от клетката. В противен случай предишната стойност трябва да се премахне ръчно.
Заключение
Това са някои от начините за намиране на стойности в колони с помощта на VBA код в Excel. Показах всички методи със съответните примери, но може да има и много други повторения. Обсъдих и основите на използваните функции. Ако имате друг метод за постигане на това, моля, не се колебайте да го споделите с нас. Посетете нашия уебсайт ExcelWIKI за още интересни статии за Excel.