Obsah
V tomto článku vám ukážu, jak můžete analyzovat situaci v aplikaci Excel. VBA pokud buňka obsahuje nějakou hodnotu. Naučíte se analyzovat situaci jak pro libovolnou hodnotu, tak pro konkrétní hodnotu.
Analýza Excel VBA: Pokud buňka obsahuje hodnotu pak (Rychlé zobrazení)
Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo appeared in Physics exam." End If End Sub
Stáhnout cvičebnici
Stáhněte si tento cvičební sešit a procvičujte si při čtení tohoto článku.
VBA If Cell Contains Value Then.xlsmAnalýza Excel VBA: Pokud buňka obsahuje hodnotu, pak vraťte výstupy (analýza krok za krokem)
Zde máme soubor dat se známkami některých žáků z fyziky, chemie a matematiky ve škole s názvem Mateřská škola Slunečnice.
Prázdné buňky znamenají, že se student nedostavil, tj. nebyl přítomen u dané zkoušky. Nyní analyzujme situaci, zda buňka obsahuje nějakou hodnotu, či nikoli, s tímto souborem dat.
⧪ Krok 1: Deklarace buňky
Nejprve musíme deklarovat buňku, jejíž hodnotu chceme analyzovat. Analyzujme, zda se Jennifer Marlo dostavila ke zkoušce z fyziky, nebo ne.
Proto musíme zkontrolovat, zda buňka C12 obsahuje hodnotu nebo ne.
Za tímto účelem musíme nejprve deklarovat buňku C12 .
Řádek kódu pro dosažení tohoto cíle bude:
Set Cell = Range("C12").Cells(1, 1)
⧪ Krok 2: Kontrola, zda buňka obsahuje hodnotu (včetně konkrétní hodnoty)
Dále musíme zkontrolovat, zda buňka obsahuje hodnotu, nebo ne. To provedeme pomocí příkazu Pokud je podmínka . Řádek kódu bude:
If Cell.Value "" Then
Tento kód se provede, pokud buňka obsahuje jakoukoli hodnotu. Chcete-li zkontrolovat hodnotu (například zda obsahuje 100 nebo ne), použijte tuto konkrétní hodnotu s příkazem Rovná se symbol.
If Cell.Value "" Then
⧪ Krok 3: Přidělení úkolu
Pak je třeba nastavit úlohu, která se provede, pokud buňka obsahuje hodnotu (nebo určitou hodnotu).
Zde chceme zobrazit zprávu "Jennifer Marlo se objevila na zkoušce z fyziky." . Řádek kódu tedy bude:
MsgBox "Jennifer Marlo se dostavila ke zkoušce z fyziky."
⧪ Krok 4: Ukončení bloku If
Nakonec je třeba deklarovat konec bloku If.
End If
Takže kompletní VBA kód bude:
⧭ Kód VBA:
Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo appeared in Physics exam." End If End Sub
⧭ Výstup:
Spusťte tento kód kliknutím na Spustit Sub/UserForm na panelu nástrojů.
Zobrazí se zpráva "Jennifer Marlo se objevila na zkoušce z fyziky." jako buňka C12 obsahuje hodnotu 50 .
Příklady zahrnující If Cell Contains a Value Then a Specified Output pomocí Excel VBA
Naučili jsme se analyzovat, zda buňka obsahuje hodnotu nebo ne v VBA . Nyní prozkoumejme několik příkladů, aby bylo jasné, jak tomu rozumět.
1. Vývoj makra pro vyfiltrování hodnoty Pokud odpovídající buňka obsahuje nějakou hodnotu, pak v aplikaci Excel VBA
Vyvíjejme Makro odfiltrovat studenty, kteří se zúčastnili jednotlivých zkoušek.
To znamená, že musíme zkontrolovat buňky obsahující známky jednotlivých předmětů a zjistit, zda obsahují hodnotu, nebo ne.
Pokud ano, musíme zjistit jméno příslušného studenta.
Kompletní VBA kód pro dosažení tohoto cíle bude:
⧭ Kód VBA:
Sub Sorting_Out_Cells_that_Contain_Values() Starting_Cell = InputBox("Zadejte odkaz na první buňku filtrovaných dat: ") For i = 2 To Selection.Columns.Count Range(Starting_Cell).Cells(1, i - 1) = Selection.Cells(1, i) Next i Count = 2 For i = 2 To Selection.Columns.Count For j = 2 To Selection.Rows.Count Set Cell = Selection.Cells(j, i) If Cell.Value "" ThenRange(Starting_Cell).Cells(Count, i - 1) = Selection.Cells(j, 1).Value Count = Count + 1 End If Next j Count = 2 Next i End Sub
⧭ Výstup:
Vyberte datovou sadu (Včetně Záhlaví ) a spusťte tento Makro .
Nejprve budete vyzváni k zadání odkazu na první buňku, do které chcete filtrovat data. Já jsem zadal. G3 .
Pak klikněte na OK . Získáte jména studentů, kteří se zúčastnili každé ze zkoušek (včetně Záhlaví ) v novém souboru dat počínaje buňkou G3 .
2. Vytvoření uživatelsky definované funkce pro seřazení hodnoty Pokud příslušná buňka obsahuje určitou hodnotu, pak v aplikaci Excel VBA
Nyní vytvoříme uživatelsky definovanou funkci, která vrátí jména studentů, kteří získali určitou známku v každém z předmětů.
Postup je téměř stejný jako v předchozím případě. Musíme zkontrolovat buňky obsahující známky jednotlivých předmětů a zjistit, zda se rovnají určité hodnotě, nebo ne.
Pokud ano, vrátíme jméno příslušného studenta.
Na stránkách VBA kód bude:
⧭ Kód VBA:
Function Cells_with_Values(Rng As Range, Data As Variant) Dim Output() As Variant ReDim Output(Rng.Rows.Count, Rng.Columns.Count - 1) For i = 0 To Rng.Columns.Count - 2 Output(0, i) = Rng.Cells(1, i + 2) Next i Count = 1 For i = 2 To Rng.Columns.Count For j = 2 To Rng.Rows.Count Set Cell = Rng.Cells(j, i) If Cell.Value = Data Then Output(Count, i - 2) =Rng.Cells(j, 1).Value Count = Count + 1 End If Next j Count = 1 Next i For i = LBound(Output, 1) To UBound(Output, 1) For j = LBound(Output, 2) To UBound(Output, 2) If Output(i, j) = 0 Then Output(i, j) = "" End If Next j Next i Cells_with_Values = Output End Function
⧭ Výstup:
Kód vytvoří funkci s názvem Cells_with_Values který přijímá dva argumenty, a Rozsah a Hodnota .
Pomocí této funkce zjistíme, kteří studenti získali 100 bodů v jednotlivých předmětech.
Vyberte rozsah buněk v pracovním listu a zadejte tuto funkci do první buňky rozsahu:
=Cells_with_Values(B3:E13,100)
[Zde B3:E3 je můj soubor dat (včetně Záhlaví ) a 100 je moje odpovídající hodnota. Použijte svou.]
Pak stiskněte tlačítko CTRL + SHIFT + ENTER ( Vzorec pole ). Vrátí pole složené ze jmen studentů, kteří získali 100 bodů v každém předmětu, včetně jmen studentů, kteří získali 100 bodů v každém předmětu. Záhlaví .
3. Vývoj uživatelského formuláře pro výpis hodnoty, pokud odpovídající buňka obsahuje jakoukoli hodnotu (nebo konkrétní hodnotu) v aplikaci Excel VBA
Nakonec vytvoříme Uživatelský formulář získat jména studentů, kteří se zúčastnili (nebo získali konkrétní známky) v některých konkrétních zkouškách.
⧪ Krok 1: Otevření uživatelského formuláře
Přejděte na Insert> UserForm možnost v VBA editoru otevřít nový Uživatelský formulář . Nový Uživatelský formulář s názvem Uživatelský formulář1 bude otevřena.
⧪ Krok 2: Přetažení nástrojů na formulář uživatele
Kromě toho Uživatelský formulář , získáte Toolbox . Přesuňte kurzor na Toolbox a přetáhnout 4 štítky (Label1, Label2, Label3, Label4) a 3 ListBoxy (ListBox1, ListBox2, ListBox3) a TextBox (TextBox1) v obdélníkovém tvaru nad Uživatelský formulář .
Pak přetáhněte další Štítek (Label5) a TextBox (TextBox2) do levého dolního rohu Uživatelský formulář .
Nakonec přetáhněte CommandButton (CommandButton1) do pravého dolního rohu.
Změna zobrazení Štítky na Sloupec vyhledávání , Sloupec pro návrat , Jakákoli hodnota nebo konkrétní hodnota , Hodnota, a Výchozí buňka.
Změňte také zobrazení CommandButton1 na OK .
⧪ Krok 3: Psaní kódu pro ListBox3
Dvakrát klikněte na ListBox3 . A Soukromá dílčí procedura s názvem ListBox3_Click Otevře se okno. V něm zadejte následující kód.
Private Sub ListBox3_Click() If UserForm1.ListBox3.Selected(0) = True Then UserForm1.Label4.Visible = False UserForm1.TextBox1.Visible = False ElseIf UserForm1.ListBox3.Selected(1) = True Then UserForm1.Label4.Visible = True UserForm1.TextBox1.Visible = True End If End Sub
⧪ Krok 4: Zápis kódu pro CommandButton1
Pak dvakrát klikněte na CommandButton1 . další Soukromá dílčí procedura s názvem CommandButton1_Click Otevře se okno. V něm zadejte následující kód.
Private Sub CommandButton1_Click() On Error GoTo Message Starting_Cell = UserForm1.TextBox2.Text Count1 = 1 For i = 1 To Selection.Columns.Count If UserForm1.ListBox1.Selected(i - 1) = True Then Range(Starting_Cell).Cells(1, Count1) = Selection.Cells(1, i) Count1 = Count1 + 1 End If Next i If Count1 = 1 Then MsgBox "Select at Least One Lookup Column.", vbExclamation ExitSub End If Data_Selected = 0 For i = 1 To Selection.Columns.Count If UserForm1.ListBox2.Selected(i - 1) = True Then Data_Selected = i Exit For End If Next i If Data_Selected = 0 Then MsgBox "Select One Return Column.", vbExclamation Exit Sub End If Count2 = 1 Count3 = 2 For i = 1 To Selection.Columns.Count If UserForm1.ListBox1.Selected(i - 1) = True Then For j= 2 To Selection.Rows.Count Set Cell = Selection.Cells(j, i) If UserForm1.ListBox3.Selected(0) = True Then If Cell.Value "" Then Range(Starting_Cell).Cells(Count3, Count2) = Selection.Cells(j, Data_Selected).Value Count3 = Count3 + 1 End If ElseIf UserForm1.ListBox3.Selected(1) = True ThenIf Cell.Value = UserForm1.TextBox1.Text Then Range(Starting_Cell).Cells(Count3, Count2) = Selection.Cells(j, Data_Selected).Value Count3 = Count3 + 1 End If Else MsgBox "Select Either Any Value or Specific Value.", vbExclamation Exit For End If Next j Count3 = 2 Count2 = Count2+ 1 End If Next i Exit Sub Zpráva: MsgBox "Zadejte platný odkaz na buňku jako počáteční buňku.", vbExclamation End Sub
⧪ Krok 5: Psaní kódu pro spuštění uživatelského formuláře
Nakonec vložte nový Modul z Panel nástrojů VBA a vložte do něj následující kód.
Sub Run_UserForm() UserForm1.Caption = "Filtrování buněk, které obsahují hodnoty" UserForm1.ListBox1.BorderStyle = fmBorderStyleSingle UserForm1.ListBox1.ListStyle = fmListStyleOption UserForm1.ListBox2.BorderStyle = fmBorderStyleSingle UserForm1.ListBox2.ListStyle = fmListStyleOption UserForm1.ListBox3.BorderStyle = fmBorderStyleSingle UserForm1.ListBox3.ListStyle = fmListStyleOption For i = 1 ToSelection.Columns.Count UserForm1.ListBox1.AddItem Selection.Cells(1, i) UserForm1.ListBox2.AddItem Selection.Cells(1, i) Next i UserForm1.ListBox1.MultiSelect = fmMultiSelectMulti UserForm1.ListBox3.AddItem "Any Value" UserForm1.ListBox3.AddItem "Specific value" UserForm1.Label4.Visible = False UserForm1.TextBox1.Visible = False Load UserForm1 UserForm1.Show End Sub
⧪ Krok 6: Spuštění uživatelského formuláře (konečný výstup)
Vaše Uživatelský formulář je nyní připraven k použití. Vyberte soubor dat z pracovního listu ( B3:E13 zde) (Včetně Záhlaví ) a spusťte Makro s názvem Run_UserForm .
Na stránkách Uživatelský formulář se načte do pracovního listu. Z pole Sloupec vyhledávání tabulky jsem vybral Fyzika a Matematika , protože chci získat jména studentů, kteří se objevili v soutěži. Fyzika a Matematika zkoušky.
Z Sloupec pro návrat tabulky jsem vybral Jméno studenta , protože chci získat jména studentů.
A z Jakákoli hodnota nebo specifická hodnota tabulky jsem vybral Jakákoli hodnota .
A konečně, v Počáteční buňka jsem vložil G3 .
Pak klikněte na OK . Získáte jména studentů, kteří se objevili v soutěži. Fyzika a Matematika zkoušky od buňky G3 .
Pokud jste vybrali Specifická hodnota z Jakákoli hodnota nebo specifická hodnota byste získali další Textové pole zadat konkrétní hodnotu.
Zde jsem zadal 100 .
Klikněte na OK ...a získáte studenty, kteří dostali 100 na adrese Fyzika a Chemie .
Na co nezapomenout
Pro vrácení jmen studentů jsme použili dvourozměrné pole v souboru Funkce definovaná uživatelem popsané v příkladu 2 .