V programovacím jazyce VBA používaném v programu Excel je funkce WorksheetFunction Match představuje nástroj pro nalezení hodnoty v rozsahu buněk a návrat jeho pozice. Tato funkce je velmi užitečná, protože umožňuje automaticky vyhledávat požadovaná data bez nutnosti ručního vyhledávání.
Syntaxe funkce Match je následující:
WorksheetFunction.Match (Hodnota, Rozsah, Typ_poska)
Hodnota je hodnota, kterou je třeba najít v rozsahu buněk. Rozsah je rozsah buněk, ve kterých se provádí vyhledávání. Typ_poska je parametr, který určuje typ vyhledávání. Pokud se například použije hodnota 0 nebo false, bude se vyhledávání provádět pouze přesnou shodou. Pokud se použije hodnota 1 nebo true, bude se hledat podle nejbližší hodnoty.
Příklad použití funkce WorksheetFunction Match:
Dim rng As Range
Dim value As Variant
Dim position As Variant
Set rng = Range("A1:A10")
value = "apple"
position = WorksheetFunction.Match(value, rng, 0)
MsgBox "pozice buňky s hodnotou" & value & "v rozsahu" & rng.Address & "rovná se" & position
V tomto příkladu najdeme v rozsahu buněk od A1 do A10 hodnotu "apple" a vyvedeme pozici této buňky pomocí funkce WorksheetFunction Match. Tímto způsobem můžeme rychle a snadno najít hodnoty, které potřebujeme v dokumentu, aniž bychom museli ručně procházet každou buňku.
Popis funkce VBA Excel WorksheetFunction Match
Funkce VBA Excel WorksheetFunction Match používá se k nalezení hodnoty v rozsahu a návratu pozice této hodnoty do rozsahu. Má následující syntaxi:
WorksheetFunction.Match (Význam_poska, Rozsah_poska, [Typ_odpovědnost])
- Význam_poska - hodnota, kterou je třeba najít v rozsahu.
- Rozsah_poska - rozsah, ve kterém je třeba vyhledat hodnotu.
- Typ_odpovědnost (volitelný) - typ shody pro vyhledávání. Tento parametr může mít následující hodnoty: 0-pro přesnou shodu, 1 - pro nalezení nejbližší menší hodnoty, -1-pro nalezení nejbližší větší hodnoty.
Funkce vrací pozici nalezené hodnoty v rozsahu. Pokud není nalezena žádná hodnota, funkce vrátí chybu #N/A.
Příklad použití funkce:
Sub MatchExample()Dim values As RangeDim searchValue As VariantDim result As VariantSet values = Range("A1:A5")searchValue = "apple"result = WorksheetFunction.Match(searchValue, values, 0)MsgBox "Найдено значение в позиции " & resultEnd Sub
V tomto příkladu hledáme hodnotu "apple" v rozsahu A1:A5. Funkce Match vrací pozici hodnoty v rozsahu. Pokud se hodnota nenajde, zobrazí se chyba.
Syntaxe funkce VBA Excel WorksheetFunction Match
Funkce VBA Excel WorksheetFunction.Match se používá k nalezení konkrétní hodnoty v rozsahu buněk a vrací pozici této hodnoty.
Syntaxe funkce VBA Excel WorksheetFunction.Match vypadá následovně:
- WorksheetFunction.Match (Význam_poska, Rozsah_poska, [Typ_přijetí])
Hodnota_poska je hodnota, kterou hledáme v rozsahu buněk.
Rozsah_poska je rozsah buněk, ve kterém hledáme hodnotu.
Typ_připojení (volitelný parametr) je způsob, jak porovnat hodnotu_připojení s hodnotami v rozsahu_připojení. Možné hodnoty:
- 1-Hledání nejbližší menší hodnoty;
- 0-hledání přesné hodnoty (výchozí);
- -1-hledání nejbližšího většího významu.
Hodnota vrácená funkcí WorksheetFunction.Match, závisí na úspěšnosti vyhledávání:
- Pokud je nalezena hodnota, funkce vrátí pozici hodnoty v rozsahu buněk.
- Pokud není nalezena žádná hodnota, funkce vrátí chybu #N/D (není k dispozici).
Příklady použití funkce WorksheetFunction.Match :
-
Najít pozici hodnoty" Apple " v rozsahu buněk A1:A10:
Dim result As Variantresult = WorksheetFunction.Match("Apple", Range("A1:A10"), 0)
Dim result As Variantresult = WorksheetFunction.Match(7.5, Range("B1:B5"), 1)
Příklady použití funkce VBA Excel WorksheetFunction Match
Zde je několik příkladů použití funkce Match :
-
Jednoduchý příklad použití funkce Match k nalezení hodnoty v jednorozměrném rozsahu:
Dim value As VariantDim range As RangeDim position As Variantvalue = "Apple"Set range = Range("A1:A10")position = WorksheetFunction.Match(value, range, 0)MsgBox "Позиция значения " & value & " в диапазоне " & range.Address & " равна " & position
Dim value As VariantDim range As RangeDim position As Variantvalue = "Apple"Set range = Range("A1:B10")position = WorksheetFunction.Match(value, range, 0)MsgBox "Позиция значения " & value & " в двухмерном диапазоне " & range.Address & " равна " & position
Dim values As RangeDim sequence As RangeDim position As VariantSet values = Range("A1:A10")Set sequence = Range("C1:C10")position = WorksheetFunction.Match(values, sequence, 0)MsgBox "Позиции значений " & values.Address & " в диапазоне " & sequence.Address & " равны " & position
Je však třeba poznamenat, že funkce WorksheetFunction.Match může způsobit chybu, pokud není hodnota nalezena v rozsahu. Proto se doporučuje před voláním funkce použít kontrolu hodnoty.
Vyhledejte příslušnou hodnotu pomocí funkce VBA Excel WorksheetFunction Match
Funkce VBA Excel WorksheetFunction Match vám umožňuje vyhledat hodnotu v daném rozsahu a vrátit pozici nalezené hodnoty. Je to velmi užitečná funkce, která usnadňuje nalezení příslušných hodnot ve velkých datových polích.
Syntaxe funkce WorksheetFunction Match:
- WorksheetFunction.Match(lookup_value, lookup_array, [match_type])
lookup_value-hodnota, kterou je třeba najít v rozsahu
lookup_array-rozsah, ve kterém se bude hledat hodnota
match_type-volitelná možnost, která určuje typ vyhledávání
- 0 nebo dolů-přesná shoda hodnoty
- 1-nejbližší hodnota, která je větší nebo rovna hledanému
- -1-nejbližší hodnota, která je menší nebo rovna hledanému
Příklad použití funkce VBA Excel WorksheetFunction Match:
Sub FindValue()Dim lookup_value As VariantDim lookup_array As RangeDim result As Variantlookup_value = "apple"Set lookup_array = Range("A1:A10")result = WorksheetFunction.Match(lookup_value, lookup_array, 0)If Not IsError(result) ThenMsgBox "Значение " & lookup_value & " найдено в ячейке " & lookup_array.Cells(result).AddressElseMsgBox "Значение " & lookup_value & " не найдено"End IfEnd Sub
V tomto příkladu funkce hledá hodnotu "apple" v rozsahu A1:A10. Pokud je hodnota nalezena, zobrazí se zpráva s adresou nalezené buňky a pokud není nalezena hodnota, zobrazí se zpráva, že hodnota nebyla nalezena.
Funkce VBA Excel WorksheetFunction Match je velmi výkonným nástrojem pro vyhledávání relevantních hodnot ve velkých datových polích. Jeho aplikace umožňuje automatizovat a zjednodušit úlohy zpracování a analýzy dat v Excelu.
Určení pozice hodnoty v rozsahu pomocí funkce VBA Excel WorksheetFunction Match
Funkce VBA Excel WorksheetFunction Match umožňuje určit pozici konkrétní hodnoty v daném rozsahu. Tato funkce je zvláště užitečná, když je nutné najít pozici položky ve sloupci nebo řádku.
Syntaxe funkce Match:
- Lookup_value: hodnota, kterou je třeba najít;
- Lookup_array: rozsah, ve kterém se vyhledává hodnota;
- Match_type: volitelný argument, který udává typ mapování:
- -1 nebo "menší nebo rovný": najde největší hodnotu, menší nebo rovný Lookup_value;
- 0 nebo "blízko": najde hodnotu blízkou Lookup_value;
- 1 nebo "více nebo rovno": najde nejmenší hodnotu, větší nebo rovnou Lookup_value.
Příklad použití funkce Match:
Řekněme, že máme následující rozsah A1:A5 s čísly 10, 20, 30, 40 a 50. Chceme určit pozici hodnoty 30 v tomto rozsahu.
Sub FindPosition()Dim RangeToSearch As RangeSet RangeToSearch = Range("A1:A5")Dim ValueToFind As VariantValueToFind = 30Dim Position As VariantPosition = Application.WorksheetFunction.Match(ValueToFind, RangeToSearch, 0)If Not IsError(Position) ThenMsgBox "Значение 30 найдено в ячейке: " & RangeToSearch.Cells(Position, 1).AddressElseMsgBox "Значение 30 не найдено в диапазоне."End IfEnd SubVýsledek provádění makra bude hlásit pozici hodnoty 30 v uvedeném rozsahu.
Použití funkce Match umožňuje efektivně určit polohu hodnoty v daném rozsahu. To je zvláště užitečné při práci s velkými sadami dat, kdy může hledání trvat dlouho.
Poznámky a upozornění při použití funkce VBA Excel WorksheetFunction Match
Při použití funkce VBA Excel WorksheetFunction.Match pro nalezení hodnoty v rozsahu, je třeba vzít v úvahu následující body:
- Funkce Match vyhledává pouze v jednorozměrných pásmech, takže je nutné přenášet buď jeden řádek, nebo jeden sloupec.
- Pokud hledaná hodnota není nalezena v rozsahu, funkce Match vrátí chybu #N/A . Pro zpracování těchto případů se doporučuje použít konstrukci kontroly chyby.
- Ve výchozím nastavení funkce Match vyhledá hodnotu, která se rovná vyhledané hodnotě. Pomocí třetího argumentu funkce Match je však možné nastavit další kritéria pro mapování, například hledat maximální hodnotu nejbližší menší nebo nejbližší větší hodnotu.
- Funkce Match nezohledňuje Formát buněk, takže při používání funkce musíte být opatrní při hledání hodnot, jejichž formát se může lišit od formátu buněk v rozsahu.
- V případě, že rozsah má několik stejných hodnot, funkce Match vrátí index první nalezené hodnoty.
- Vzhledem k tomu, že funkce Match je exelově orientovaná funkce, může být její použití v VBA omezeno na možnosti programu nebo verzi Excelu. Nejprve se doporučuje seznámit se s dokumentací aplikace Excel, která se používá k vývoji skriptu.
Vzhledem k uvedeným poznámkám a upozornění je funkce VBA Excel WorksheetFunction.Match je výkonný nástroj pro vyhledávání hodnot v pásmech a usnadnění práce s daty v tabulkách.