Excel VBA: Ha a cella értéket tartalmaz, akkor adja vissza a megadott kimenetet

  • Ossza Meg Ezt
Hugh West

Ebben a cikkben megmutatom, hogyan elemezheti a helyzetet az Excelben. VBA ha egy cella tartalmaz egy értéket. Megtanulja elemezni a helyzetet mind bármely érték, mind egy adott érték esetében.

Excel VBA elemzés: Ha a cella tartalmaz egy értéket, akkor (gyorsnézet)

 Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo megjelent a fizika vizsgán." End If End Sub 

Gyakorlati munkafüzet letöltése

Töltse le ezt a gyakorlati munkafüzetet, hogy gyakorolhasson, miközben ezt a cikket olvassa.

VBA If Cell Contains Value Then.xlsm Ha a cella tartalmazza az értéket

Excel VBA elemzés: Ha a cella tartalmaz egy értéket, akkor adja vissza a kimeneteket (lépésről lépésre történő elemzés)

Itt van egy adathalmaz, amely néhány diák jegyeit tartalmazza fizikából, kémiából és matematikából egy Napraforgó Óvoda nevű iskolában.

Az üres cellák azt jelentik, hogy a hallgató nem jelent meg, azaz hiányzott az adott vizsgán. Most elemezzük a helyzetet, hogy egy cella tartalmaz-e értéket vagy sem, ezzel az adatsorral.

⧪ 1. lépés: A cella deklarálása

Először is meg kell adnunk a cellát, amelynek értékét elemezni szeretnénk. Elemezzük, hogy Jennifer Marlo megjelent-e a fizika vizsgán vagy sem.

Ezért ellenőriznünk kell, hogy a sejt C12 értéket tartalmaz vagy sem.

Ehhez először ki kell nyilvánítanunk a cellát C12 .

Az ehhez szükséges kódsor a következő lesz:

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

⧪ 2. lépés: Annak ellenőrzése, hogy a cella tartalmaz-e értéket (beleértve egy adott értéket is)

Ezután ellenőriznünk kell, hogy a cella tartalmaz-e értéket vagy sem. Ezt egy Ha a feltétel A kódsor a következő lesz:

 If Cell.Value "" Then 

Ez a kód akkor fog végrehajtódni, ha a cella bármilyen értéket tartalmaz. Egy érték ellenőrzéséhez (például, hogy tartalmaz-e 100-at vagy sem), használja az adott értéket egy Egyenlő a szimbólum.

 If Cell.Value "" Then 

⧪ 3. lépés: A feladat kiosztása

Ezután létre kell hoznod egy feladatot, amely akkor hajtódik végre, ha a cella értéket (vagy egy adott értéket) tartalmaz.

Itt a következő üzenetet szeretnénk megjeleníteni "Jennifer Marlo megjelent a fizika vizsgán." A kódsor tehát a következő lesz:

 MsgBox "Jennifer Marlo megjelent a fizika vizsgán." 

⧪ 4. lépés: Az If blokk befejezése

Végezetül az If blokknak véget kell vetni.

 End If 

Tehát a teljes VBA kód lesz:

⧭ VBA kód:

 Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo megjelent a fizika vizsgán." End If End Sub 

⧭ Kimenet:

Futtassa ezt a kódot a Sub/UserForm futtatása gombot az eszköztáron.

A következő üzenet jelenik meg "Jennifer Marlo megjelent a fizika vizsgán." mint a sejt C12 tartalmaz egy értéket, a 50 .

Példák a Ha a cella tartalmaz egy értéket, akkor egy megadott kimenet az Excel VBA-val

Megtanultuk, hogy elemezzük, hogy egy cella tartalmaz-e értéket vagy sem a VBA Most pedig nézzünk meg néhány példát, hogy a megértés világos legyen.

1. Makró fejlesztése egy érték kiszűrésére, ha a megfelelő cella bármilyen értéket tartalmaz az Excel VBA-ban.

Fejlesszünk ki egy Makró hogy kiszűrje azokat a diákokat, akik az egyes vizsgákon megjelentek.

Vagyis meg kell vizsgálnunk az egyes tantárgyak jegyeit tartalmazó cellákat, és meg kell néznünk, hogy tartalmaznak-e értéket vagy sem.

Ha igen, akkor ki kell választanunk a megfelelő diák nevét.

A teljes VBA kódot, hogy ezt elérjük:

⧭ VBA kód:

 Sub Sorting_Out_Cells_that_Contain_Values() Starting_Cell = InputBox("Enter the Reference of the First Cell of the Filtered Data: ") 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 

⧭ Kimenet:

Válassza ki az adathalmazt (beleértve a Fejlécek ) és futtassa ezt Makró .

Először is, meg kell adnia az első cella hivatkozását, ahová a szűrt adatokat szeretné beírni. Én a következőt írtam be G3 .

Ezután kattintson a OK Megkapja azoknak a diákoknak a nevét, akik az egyes vizsgákon megjelentek (beleértve a Fejlécek ) egy új adatkészletben a cellából kiindulva G3 .

2. Felhasználó által definiált függvény létrehozása egy érték kiválogatására, ha a megfelelő cella egy adott értéket tartalmaz az Excel VBA-ban.

Most létrehozunk egy felhasználó által definiált függvényt, amely visszaadja azoknak a diákoknak a nevét, akik egy adott jegyet kaptak az egyes tantárgyakból.

Az eljárás majdnem ugyanaz, mint a fenti. Ellenőriznünk kell az egyes tantárgyak jegyeit tartalmazó cellákat, és meg kell néznünk, hogy azok megegyeznek-e egy adott értékkel vagy sem.

Ha igen, akkor visszaadjuk a megfelelő diák nevét.

A VBA kód lesz:

⧭ VBA kód:

 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 

⧭ Kimenet:

A kód létrehoz egy függvényt Cells_with_Values amely két argumentumot fogad el, egy Tartomány és egy Érték .

Keressük meg azokat a diákokat, akik 100 pontot kaptak az egyes tantárgyakból, ezzel a függvénnyel.

Válasszon ki egy cellatartományt a munkalapon, és írja be ezt a függvényt a tartomány első cellájába:

=Cells_with_Values(B3:E13,100)

[Itt B3:E3 az én adathalmazom (beleértve a Fejlécek ) és 100 az én megfelelő értékem. Te használd a tiédet.]

Ezután nyomja meg a CTRL + SHIFT + ENTER ( Array képlet ). Ez egy olyan tömböt ad vissza, amely azoknak a diákoknak a nevéből áll, akik 100 pontot kaptak az egyes tantárgyakból, beleértve a Fejlécek .

3. UserForm fejlesztése egy érték kivonására, ha a megfelelő cella bármilyen értéket (vagy egy adott értéket) tartalmaz az Excel VBA-ban

Végül, kidolgozunk egy UserForm azon diákok nevének kinyerése, akik bizonyos vizsgákon megjelentek (vagy bizonyos pontszámokat kaptak).

⧪ 1. lépés: A felhasználói űrlap megnyitása

Menjen a Insert> UserForm opciót a VBA szerkesztővel egy új UserForm Egy új UserForm a címen. UserForm1 megnyílik.

⧪ 2. lépés: Eszközök áthúzása a felhasználói űrlapra

Emellett a UserForm , akkor megkapja a Szerszámosláda Mozgassa a kurzort a Szerszámosláda és húzza 4 címke (Címke1, Címke2, Címke3, Címke4) és 3 ListBox (ListBox1, ListBox2, ListBox3) és egy TextBox (TextBox1) téglalap alakban a UserForm .

Ezután húzzon egy másik Címke (Label5) és egy TextBox (TextBox2) a bal alsó sarokba a UserForm .

Végül húzzon egy CommandButton (CommandButton1) a jobb alsó sarokba.

Módosítsa a kijelzőket a Címkék a címre. Kereső oszlop , Visszatérési oszlop , Bármilyen érték vagy egy adott érték , Érték, és Kezdőcella.

Továbbá, változtassa meg a kijelzőt a CommandButton1 a címre. OK .

⧪ 3. lépés: A ListBox3 kódjának megírása

Kattintson duplán a ListBox3 . A Privát alprocedúra a címen. ListBox3_Click A következő kódot írja be.

 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 

⧪ 4. lépés: A CommandButton1 kódjának írása

Ezután kattintson duplán a CommandButton1 . egy másik Privát alprocedúra a címen. CommandButton1_Click A következő kódot írja be.

 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 If 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 If 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 Vég 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 Message: MsgBox "Adj meg egy érvényes cellahivatkozást kezdő cellaként.", vbExclamation End Sub 

⧪ 5. lépés: Kód írása a UserForm futtatásához

Végül illesszen be egy új Modul a VBA eszköztár és illessze be oda a következő kódot.

 Sub Run_UserForm() UserForm1.Caption = "Értéket tartalmazó cellák szűrése" 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 

⧪ 6. lépés: A UserForm futtatása (A végső kimenet)

Az Ön UserForm most már készen áll a használatra. Válassza ki az adathalmazt a munkalapról ( B3:E13 itt) (Beleértve a Fejlécek ) és futtassa a Makró a címen. Run_UserForm .

A UserForm betöltődik a munkalapra. A Kereső oszlop táblázatban kiválasztottam Fizika és Matematika , mert szeretném megkapni a diákok neveit, akik megjelentek a Fizika és Matematika vizsgák.

A Visszatérési oszlop táblázatban kiválasztottam Diák neve , mert meg akarom kapni a diákok nevét.

És a Bármilyen érték vagy meghatározott érték táblázatban kiválasztottam Bármilyen érték .

Végül, a Kezdő cella dobozba, a G3 .

Ezután kattintson a OK . Megkapod azoknak a diákoknak a nevét, akik megjelentek a Fizika és Matematika vizsgák a cellából kiindulva G3 .

Ha kiválasztotta volna a Konkrét érték a Bármilyen érték vagy meghatározott érték táblázat, akkor kaptál volna egy másik TextBox a konkrét érték megadásához.

Itt adtam meg 100 .

Kattintson a címre. OK ...és megkapod azokat a diákokat, akiket 100 a oldalon. Fizika és Kémia .

Emlékezetes dolgok

Egy kétdimenziós tömböt használtunk, hogy visszaadjuk a diákok nevét a Felhasználó által meghatározott funkció a példában leírtak szerint 2 .

Hugh West nagy tapasztalattal rendelkező Excel-oktató és elemző, több mint 10 éves tapasztalattal az iparágban. Számvitel és pénzügy szakos alapdiplomát, valamint üzleti adminisztrációból mesterképzést szerzett. Hugh szenvedélye a tanítás, és egyedülálló tanítási megközelítést dolgozott ki, amely könnyen követhető és érthető. Az Excelben szerzett szakértői tudása világszerte több ezer diáknak és szakembernek segített abban, hogy készségeiket és karrierjüket kiválóan teljesítsék. Hugh blogján keresztül megosztja tudását a világgal, ingyenes Excel-oktatóanyagokat és online képzéseket kínálva, hogy segítse az egyéneket és a vállalkozásokat teljes potenciáljuk kibontakoztatásában.