Excel VBA: Pokud buňka obsahuje hodnotu, vraťte zadaný výstup

  • Sdílet Toto
Hugh West

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.xlsm

Analý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 .

Hugh West je velmi zkušený školitel a analytik Excelu s více než 10 lety zkušeností v oboru. Má bakalářský titul v oboru Účetnictví a finance a magisterský titul v oboru Business Administration. Hugh má vášeň pro výuku a vyvinul jedinečný přístup k výuce, který lze snadno sledovat a pochopit. Jeho odborné znalosti Excelu pomohly tisícům studentů a profesionálů po celém světě zlepšit své dovednosti a vyniknout ve své kariéře. Prostřednictvím svého blogu Hugh sdílí své znalosti se světem a nabízí bezplatné výukové programy Excelu a online školení, které jednotlivcům a firmám pomohou dosáhnout jejich plného potenciálu.