Přejít na hlavní obsah

Jak najít řádek podle hodnoty buňky v aplikaci VBA Excel: podrobný průvodce

Microsoft Excel je jedním z nejoblíbenějších programů pro práci s tabulkami a daty. Integrovaný programovací jazyk VBA (Visual Basic for Applications) umožňuje automatizovat práci s tabulkami a provádět různé operace dat. V tomto článku se podíváme, jak najít řádek podle hodnoty buňky v VBA Excel.

Někdy možná budete muset najít konkrétní řádek ve velké tabulce na základě hodnoty konkrétní buňky. Můžete například vyhledat řádek obsahující jméno klienta a získat další údaje o jeho objednávkách nebo kontaktních informacích. V aplikaci VBA Excel existuje několik způsobů, jak tento úkol implementovat, a my se podíváme na nejúčinnější z nich.

Jedním ze způsobů, jak hledat řetězec podle hodnoty buňky v aplikaci VBA Excel, je použití cyklu For each k obcházení všech buněk ve sloupci nebo rozsahu a jejich porovnání s hodnotou, kterou je třeba najít. Pokud se hodnota shoduje, můžete uložit číslo řádku nebo provést požadované operace s nalezeným řádkem. Tento způsob může být užitečný, pokud tabulka není příliš velká a počet iterací nebude příliš velký.

Kód pro vyhledání řádku podle hodnoty buňky:
Sub Nightstroke()


Dimenzování As String


Dim Rozsahklety As Range


Dim Klec As Range


Vyhledávání = "jméno klienta"


Set Rozsahlety = Sheets ("List1").Range("A1:A100")


For Each Klec In Rozsah


Pokud Klec.Value = Nálezce


MsgBox "řetězec se jménem klienta nalezen:" & klec.Row


Exit Sub


End If


Další Klec


MsgBox "řetězec se jménem klienta nenalezen"


End Sub

V tomto příkladu používáme proměnnou Reklamace abychom zjistili, jakou hodnotu hledáme ve sloupci. Pak nastavíme proměnnou Rozsahklety Chcete-li určit rozsah buněk, ve kterých hledat. V tomto případě hledáme hodnotu ve sloupci A na listu s názvem List1.

Poté použijeme smyčku For each k přeskupení všech buněk v uvedeném rozsahu. V rámci cyklu porovnáváme hodnotu každé buňky s hledanou hodnotou. Pokud se shodují, odešleme zprávu, že byl nalezen řetězec se jménem klienta, a ukončíme provádění kódu pomocí příkazu Exit Sub. Pokud je cyklus ukončen bez shody, zobrazí se zpráva, že řetězec se jménem klienta nebyl nalezen.

Vyhledat řádek podle hodnoty buňky v aplikaci VBA Excel

V aplikaci VBA Excel lze snadno najít řádky obsahující určitou hodnotu v dané buňce. K tomu můžete použít smyčku k přerušení všech řádků nebo použít vestavěné funkce vyhledávání a filtrování dat. Tento článek se bude zabývat oběma přístupy.

Prvním způsobem je použití cyklu k přerušení všech řádků a kontrole hodnot buněk. K tomu je třeba použít konstrukci For each k přejetí všech řádků v daném rozsahu. Na každé iteraci cyklu lze porovnat hodnotu buňky s hledanou hodnotou a provést potřebné kroky. Můžete například zobrazit číslo nalezeného řádku nebo změnit formátování.

Dim cell As RangeDim searchValue As StringsearchValue = "значение"For Each cell In Range("A1:A10")If cell.Value = searchValue Then' Найдена строка с заданным значениемMsgBox "Найдена строка " & cell.Row' Можно выполнить необходимые действия с найденной строкойEnd IfNext cell

Druhým způsobem je použití vestavěných funkcí vyhledávání a filtrování dat. Jednou z těchto funkcí je Find . Umožňuje najít hodnotu v daném rozsahu a vrátit adresu buňky obsahující tuto hodnotu. Chcete-li to provést, musíte zadat možnosti vyhledávání, jako je hledaná hodnota, rozsah, ve kterém je třeba hledat, a další možnosti. Nalezenou adresu lze použít k provedení požadovaných akcí s nalezeným řádkem.

Dim searchRange As RangeDim foundCell As RangeDim searchValue As StringsearchValue = "значение"Set searchRange = Range("A1:A10")Set foundCell = searchRange.Find(searchValue)If Not foundCell Is Nothing Then' Найдена ячейка с заданным значениемMsgBox "Найдена строка " & foundCell.Row' Можно выполнить необходимые действия с найденной строкойEnd If

Oba tyto způsoby umožňují snadné nalezení řádků, které obsahují danou hodnotu v buňce v aplikaci VBA Excel. Pokud si přejete, můžete dále nakonfigurovat vyhledávání zadáním možností, jako je závislost na registru nebo další vyhledávací podmínky. Tyto metody jsou užitečné při automatizaci práce s daty a zpracování velkého množství informací.

Krok 1: Otevřete Visual Basic pro aplikaci (VBA) v Excelu

Než začnete hledat řádek podle hodnoty buňky v aplikaci VBA Excel, budete muset otevřít Editor Visual Basic pro aplikaci (VBA). Zde je návod, jak to udělat:

  1. Otevřete aplikaci Excel.
  2. Vyberte kartu Vývojář v horní části okna aplikace Excel. Pokud tato karta neexistuje, musíte ji přidat. Chcete-li to provést, klikněte pravým tlačítkem na panelu nástrojů, vyberte "Přizpůsobit panel nástrojů" a aktivujte zaškrtávací políčko "Vývojář".
  3. Na kartě Vývojář klikněte na tlačítko Visual Basic a otevřete Editor VBA.
  4. V okně editoru VBA, které se otevře, uvidíte Project Explorer vlevo a editor kódu vpravo.

Nyní jste připraveni napsat kód VBA a vyhledat řádek podle hodnoty buňky v Excelu.

Krok 2: Najděte aktivní knihu

Chcete-li najít aktivní knihu, můžete použít objekt Application.ActiveWorkbook. Tento objekt je aktivní kniha a umožňuje přístup k jejím vlastnostem a metodám.

Níže je uveden příklad kódu, který vám umožní najít aktivní knihu a odvodit její název:

Sub НайтиАктивнуюКнигу()Dim АктивнаяКнига As Workbook' Присваиваем активную книгу переменнойSet АктивнаяКнига = Application.ActiveWorkbook' Выводим название активной книгиMsgBox АктивнаяКнига.NameEnd Sub

Po provedení tohoto kódu se zobrazí zpráva s názvem Aktivní knihy.

Nyní, když víme, jak najít aktivní knihu, můžeme přejít k dalšímu kroku - nalezení řádku podle hodnoty buňky.

Krok 3: Vyberte požadovaný list v knize

Po otevření knihy je nutné vybrat list, na kterém se bude řetězec hledat. V Excelu může každá kniha obsahovat více listů a abyste se dostali k požadovanému listu, musíte použít jeho index nebo název.

Index listu je pořadové číslo listu v knize začínající 1. Například první list má index 1, druhý – 2 atd. Pro výběr listu podle indexu se používá vlastnost Worksheets instrukce Workbook. Chcete-li například vybrat první list, můžete použít následující kód:

Worksheets(1).Activate

Pokud je znám název listu, lze jej použít k výběru listu. K tomu se používá vlastnost Sheets instrukce Workbook. Chcete-li například vybrat list s názvem List1, můžete použít následující kód:

Sheets("Лист1").Activate

Zde je "List1" název listu, který je uveden v Excelu.

Po výběru požadovaného listu můžete začít hledat řádek podle hodnoty buňky.

Krok 4: Určete rozsah dat pro vyhledávání

Chcete-li najít řádek podle hodnoty buňky v aplikaci VBA Excel, musíte určit rozsah dat, ve kterém bude vyhledávání provedeno. Rozsah dat lze definovat jako jeden nebo více sloupců nebo celou tabulku.

K určení rozsahu dat lze použít různé metody, v závislosti na konkrétní situaci:

  • Pokud je celá tabulka v jednom listu, lze k zadání listu použít objekt ActiveSheet a metody UsedRange nebo CurrentRegion k určení rozsahu dat.
  • Pokud je tabulka v určitém rozsahu listu, lze k určení listu a rozsahu dat použít objekty Worksheet a Range.
  • Pokud je tabulka ve více listech, lze cyklus použít k přeskupení všech listů a určení rozsahu dat v každém listu.

Po určení rozsahu dat jej lze použít ve smyčce nebo vestavěných funkcích VBA k nalezení řádku s danou hodnotou buňky. Můžete například použít smyčku For each k přerušení všech řádků v rozsahu a kontrole hodnoty každé buňky.

Určení správného rozsahu dat pro vyhledávání umožní rychlejší spuštění kódu a zefektivnění.

Krok 5: Použijte cyklus k nalezení hodnoty v rozsahu

Jakmile oznámíme proměnné a určíme rozsah, můžeme použít smyčku For each k sekvenčnímu průchodu všemi buňkami v rozsahu a nalezení hodnoty, kterou potřebujeme.

Takto vypadá kód:

Dim cell As RangeFor Each cell In myRangeIf cell.Value = searchValue Then' Нашли нужное значение' Выполняем дальнейшие действияEnd IfNext cell

V tomto příkladu používáme smyčku For each k přerušení všech buněk v proměnné myRange . Poté zkontrolujeme hodnotu každé buňky pomocí podmíněného příkazu If . Pokud se hodnota buňky shoduje se searchValue , provedeme další kroky, které v kódu definujete.

Všimněte si, že k reprezentaci aktuální buňky v cyklu používáme proměnnou cell. Můžeme se zabývat různými vlastnostmi buňky, jako je cell.Value pro získání hodnoty nebo cell.Address pro získání adresy buňky.

Tento cyklus nám umožňuje efektivně procházet každou buňku v rozsahu a provádět potřebné operace s nalezenými hodnotami.