Tartalomjegyzék
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éketExcel 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 .