Excel VBA: Ak bunka obsahuje hodnotu, potom vráťte zadaný výstup

  • Zdieľajte To
Hugh West

V tomto článku vám ukážem, ako môžete analyzovať situáciu v programe Excel VBA ak bunka obsahuje hodnotu. Naučíte sa analyzovať situáciu pre ľubovoľnú hodnotu aj pre konkrétnu hodnotu.

Analýza Excel VBA: Ak bunka obsahuje hodnotu potom (rýchle zobrazenie)

 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 

Stiahnite si cvičebnicu

Stiahnite si tento cvičebný zošit, aby ste si počas čítania tohto článku precvičili svoje zručnosti.

VBA Ak bunka obsahuje hodnotu Then.xlsm

Analýza Excel VBA: Ak bunka obsahuje hodnotu, potom vráťte výstupy (analýza krok za krokom)

Máme tu súbor údajov so známkami niektorých žiakov z fyziky, chémie a matematiky v škole s názvom Sunflower Kindergarten.

Prázdne bunky znamenajú, že študent sa na danej skúške nedostavil, teda chýbal. Teraz analyzujme situáciu, či bunka obsahuje hodnotu alebo nie, s týmto súborom údajov.

⧪ Krok 1: Deklarovanie bunky

Najprv musíme deklarovať bunku, ktorej hodnotu chceme analyzovať. Analyzujme, či sa Jennifer Marlo dostavila na skúšku z fyziky alebo nie.

Preto musíme skontrolovať, či bunka C12 obsahuje hodnotu alebo nie.

Aby sme to mohli urobiť, musíme najprv deklarovať bunku C12 .

Riadok kódu na dosiahnutie tohto cieľa bude:

 Set Cell = Range("C12").Cells(1, 1) 

⧪ Krok 2: Kontrola, či bunka obsahuje hodnotu (vrátane konkrétnej hodnoty)

Ďalej musíme skontrolovať, či bunka obsahuje hodnotu alebo nie. Toto vykonáme pomocou príkazu Ak je podmienka Riadok kódu bude:

 Ak Cell.Value "" potom 

Tento kód sa vykoná, ak bunka obsahuje akúkoľvek hodnotu. Ak chcete skontrolovať hodnotu (Napríklad, či obsahuje 100 alebo nie), použite túto konkrétnu hodnotu s Rovná sa symbol.

 Ak Cell.Value "" potom 

⧪ Krok 3: Pridelenie úlohy

Potom musíte nastaviť úlohu, ktorá sa vykoná, ak bunka obsahuje hodnotu (alebo určitú hodnotu).

Tu chceme zobraziť správu "Jennifer Marlo sa objavila na skúške z fyziky." . Takže riadok kódu bude:

 MsgBox "Jennifer Marlo sa objavila na skúške z fyziky." 

⧪ Krok 4: Ukončenie bloku If

Nakoniec musíte deklarovať koniec bloku If.

 Koniec 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:

Tento kód spustíte kliknutím na Spustiť podformulár/UserForm na paneli nástrojov.

Zobrazí sa správa "Jennifer Marlo sa objavila na skúške z fyziky." ako bunka C12 obsahuje hodnotu 50 .

Príklady zahŕňajúce Ak bunka obsahuje hodnotu, potom zadaný výstup pomocou Excel VBA

Naučili sme sa analyzovať, či bunka obsahuje hodnotu alebo nie v VBA . Teraz sa pozrime na niekoľko príkladov, aby sme si to ujasnili.

1. Vývoj makra na filtrovanie hodnoty Ak príslušná bunka obsahuje akúkoľvek hodnotu, potom v programe Excel VBA

Vytvorme Makro odfiltrovať študentov, ktorí sa zúčastnili na jednotlivých skúškach.

To znamená, že musíme skontrolovať bunky obsahujúce známky jednotlivých predmetov a zistiť, či obsahujú hodnotu alebo nie.

Ak áno, musíme zistiť meno príslušného študenta.

Kompletný VBA kód na dosiahnutie tohto cieľa bude:

⧭ Kód VBA:

 Sub Sorting_Out_Cells_that_Contain_Values() Starting_Cell = InputBox("Zadajte odkaz na prvú bunku filtrovaných údajov: ") 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 súbor údajov (vrátane Hlavičky ) a spustite tento Makro .

Najprv budete požiadaní o zadanie odkazu na prvú bunku, do ktorej chcete filtrovať údaje. Ja som zadal G3 .

Potom kliknite na tlačidlo OK . Získate mená študentov, ktorí sa zúčastnili jednotlivých skúšok (vrátane Hlavičky ) v novom súbore údajov začínajúcom od bunky G3 .

2. Vytvorenie funkcie definovanej používateľom na vytriedenie hodnoty Ak príslušná bunka obsahuje určitú hodnotu, potom v programe Excel VBA

Teraz vytvoríme používateľsky definovanú funkciu, ktorá vráti mená študentov, ktorí získali určitú známku z každého predmetu.

Postup je takmer rovnaký ako v predchádzajúcom prípade. Musíme skontrolovať bunky obsahujúce známky jednotlivých predmetov a zistiť, či sa rovnajú určitej hodnote alebo nie.

Ak áno, potom vrátime meno príslušného študenta.

Stránka 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 vytvára funkciu s názvom Cells_with_Values ktorý prijíma dva argumenty, a Rozsah a Hodnota .

Pomocou tejto funkcie zistíme, ktorí žiaci získali 100 bodov v každom z predmetov.

Vyberte rozsah buniek v pracovnom hárku a zadajte túto funkciu do prvej bunky rozsahu:

=Cells_with_Values(B3:E13,100)

[Tu B3:E3 je môj súbor údajov (vrátane Hlavičky ) a 100 je moja zodpovedajúca hodnota. Ty použi svoju.]

Potom stlačte tlačidlo CTRL + SHIFT + ENTER ( Vzorec poľa ). Vráti pole pozostávajúce z mien študentov, ktorí získali 100 bodov v každom predmete, vrátane Hlavičky .

3. Vývoj užívateľského formulára na výpis hodnoty, ak príslušná bunka obsahuje akúkoľvek hodnotu (alebo konkrétnu hodnotu) v programe Excel VBA

Nakoniec vytvoríme Používateľský formulár na získanie mien študentov, ktorí sa zúčastnili (alebo získali konkrétne známky) na niektorých konkrétnych skúškach.

⧪ Krok 1: Otvorenie používateľského formulára

Prejdite na Insert> UserForm možnosť v VBA otvoriť nový editor Používateľský formulár . Nový Používateľský formulár s názvom Používateľský formulár1 sa otvorí.

⧪ Krok 2: Presunutie nástrojov do užívateľského formulára

Okrem toho Používateľský formulár , dostanete Toolbox . Presuňte kurzor nad Toolbox a pretiahnite 4 štítky (Label1, Label2, Label3, Label4) a 3 ListBoxy (ListBox1, ListBox2, ListBox3) a TextBox (TextBox1) v obdĺžnikovom tvare nad Používateľský formulár .

Potom potiahnite ďalší Štítok (Label5) a TextBox (TextBox2) do ľavého dolného rohu Používateľský formulár .

Nakoniec potiahnite CommandButton (CommandButton1) do pravého dolného rohu.

Zmena zobrazenia Štítky na Stĺpec vyhľadávania , Návratový stĺpec , Akákoľvek hodnota alebo konkrétna hodnota , Hodnota, a Počiatočná bunka.

Zmeňte aj zobrazenie CommandButton1 na OK .

⧪ Krok 3: Písanie kódu pre ListBox3

Dvakrát kliknite na ListBox3 . A Súkromná podprocedúra s názvom ListBox3_Click Otvorí sa. Zadajte tam nasledujúci 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: Písanie kódu pre CommandButton1

Potom dvakrát kliknite na CommandButton1 . Súkromná podprocedúra s názvom CommandButton1_Click Otvorí sa. Zadajte tam nasledujúci 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 Správa: MsgBox "Zadajte platný odkaz na bunku ako počiatočnú bunku.", vbExclamation End Sub 

⧪ Krok 5: Napísanie kódu na spustenie užívateľského formulára

Nakoniec vložte nový Modul z Panel nástrojov VBA a vložte tam nasledujúci kód.

 Sub Run_UserForm() UserForm1.Caption = "Filtrovanie buniek, ktoré 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: Spustenie užívateľského formulára (konečný výstup)

Vaša stránka Používateľský formulár je teraz pripravená na použitie. Vyberte súbor údajov z pracovného hárka ( B3:E13 tu) (Vrátane Hlavičky ) a spustite Makro s názvom Run_UserForm .

Stránka Používateľský formulár sa načíta do pracovného hárka. Z Stĺpec vyhľadávania tabuľky som vybral Fyzika a Matematika , pretože chcem získať mená študentov, ktorí sa objavili v Fyzika a Matematika skúšky.

Z Návratový stĺpec tabuľky som vybral Meno študenta , pretože chcem získať mená študentov.

A z Akákoľvek hodnota alebo špecifická hodnota tabuľky som vybral Akákoľvek hodnota .

Nakoniec v Počiatočná bunka box, som dal G3 .

Potom kliknite na tlačidlo OK . Získate mená študentov, ktorí sa objavili v Fyzika a Matematika skúšky od bunky G3 .

Ak by ste vybrali Špecifická hodnota z Akákoľvek hodnota alebo špecifická hodnota tabuľky, získali by ste ďalší Textové pole na zadanie konkrétnej hodnoty.

Tu som zadal 100 .

Kliknite na . OK A dostanete študentov, ktorí dostali 100 na stránke Fyzika a Chémia .

Čo si treba zapamätať

Na vrátenie mien študentov sme použili dvojrozmerné pole v Funkcia definovaná používateľom opísané v príklade 2 .

Hugh West je veľmi skúsený tréner a analytik Excelu s viac ako 10-ročnými skúsenosťami v tomto odvetví. Má bakalársky titul v odbore účtovníctvo a financie a magisterský titul v odbore Business Administration. Hugh má vášeň pre vyučovanie a vyvinul jedinečný vyučovací prístup, ktorý sa dá ľahko sledovať a pochopiť. Jeho odborné znalosti Excelu pomohli tisíckam študentov a profesionálov na celom svete zlepšiť svoje zručnosti a vyniknúť vo svojej kariére. Hugh sa prostredníctvom svojho blogu delí o svoje znalosti so svetom a ponúka bezplatné výukové programy Excelu a online školenia, ktoré jednotlivcom a firmám pomôžu naplno využiť ich potenciál.