Kazalo
V tem članku vam bom pokazal, kako lahko analizirate stanje v Excelu. VBA če celica vsebuje vrednost. Naučili se boste analizirati situacijo tako za katero koli vrednost kot za določeno vrednost.
Analiza Excel VBA: Če celica vsebuje vrednost, potem (hitri prikaz)
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
Prenesi delovni zvezek za prakso
Prenesite ta delovni zvezek za vadbo, ki ga lahko uporabljate med branjem tega članka.
VBA Če celica vsebuje vrednost Then.xlsmAnaliza Excel VBA: Če celica vsebuje vrednost, vrnite izhode (analiza po korakih)
Tu imamo nabor podatkov z ocenami nekaterih učencev pri fiziki, kemiji in matematiki v šoli z imenom Sončnični vrtec.
Prazne celice pomenijo, da se študent ni pojavil, torej da je bil odsoten pri tem izpitu. Zdaj analizirajmo situacijo, ali celica vsebuje vrednost ali ne, s tem naborom podatkov.
⧪ 1. korak: Deklaracija celice
Najprej moramo določiti celico, katere vrednost želimo analizirati. Analizirajmo, ali se je Jennifer Marlo pojavila na izpitu iz fizike ali ne.
Zato moramo preveriti, ali je celica C12 vsebuje vrednost ali ne.
To lahko storimo tako, da najprej razglasimo celico C12 .
Vrstica kode za dosego tega cilja je:
Set Cell = Range("C12").Cells(1, 1)
⧪ Korak 2: preverjanje, ali celica vsebuje vrednost (vključno z določeno vrednostjo)
Nato moramo preveriti, ali celica vsebuje vrednost ali ne. Če je pogoj . Vrstica kode bo:
Če je vrednost celice "" Potem
Ta koda se izvede, če celica vsebuje katero koli vrednost. Če želite preveriti vrednost (na primer, ali vsebuje 100 ali ne), uporabite to določeno vrednost z Enako kot simbol.
Če je vrednost celice "" Potem
⧪ Korak 3: Dodelitev naloge
Nato morate nastaviti opravilo, ki se bo izvedlo, če bo celica vsebovala vrednost (ali določeno vrednost).
Tukaj želimo prikazati sporočilo "Jennifer Marlo se je pojavila na izpitu iz fizike." . Torej bo vrstica kode:
MsgBox "Jennifer Marlo se je pojavila na izpitu iz fizike."
⧪ Korak 4: Zaključek bloka If
Na koncu morate razglasiti konec bloka If.
Konec Če
Tako je celoten VBA koda bo:
⧭ Koda 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
⧭ Izhod:
To kodo zaženite s klikom na Zaženi pod/UserForm v orodni vrstici.
Prikazalo se bo sporočilo "Jennifer Marlo se je pojavila na izpitu iz fizike." kot celica C12 vsebuje vrednost 50 .
Primeri, ki vključujejo Če celica vsebuje vrednost, potem določen izhod z Excel VBA
Naučili smo se analizirati, ali celica vsebuje vrednost ali ne v VBA . Zdaj pa si oglejmo nekaj primerov, da bo razumevanje jasno.
1. Razvijanje makra za filtriranje vrednosti Če ustrezna celica vsebuje katero koli vrednost, potem v Excelu VBA
Razvijmo Makro za izločanje učencev, ki so se udeležili vseh izpitov.
To pomeni, da moramo preveriti celice, ki vsebujejo ocene posameznih predmetov, in ugotoviti, ali vsebujejo vrednost ali ne.
Če je tako, moramo poiskati ime ustreznega učenca.
Celoten VBA koda za dosego tega cilja bo:
⧭ Koda VBA:
Sub Razvrstitev_Out_Cells_that_Contain_Values() Starting_Cell = InputBox("Vnesite referenco prve celice filtriranih podatkov: ") 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
⧭ Izhod:
Izberite nabor podatkov (Vključno z Naslovnice ) in zaženite to Makro .
Najprej boste morali vnesti referenco prve celice, v kateri želite filtrirane podatke. G3 .
Nato kliknite V REDU . Dobili boste imena učencev, ki so se udeležili vseh izpitov (vključno z Naslovnice ) v novem podatkovnem nizu, ki se začne v celici G3 .
2. Ustvarjanje uporabniško določene funkcije za razvrščanje vrednosti, če ustrezna celica vsebuje določeno vrednost, potem v Excelu VBA
Zdaj bomo ustvarili uporabniško definirano funkcijo, ki bo vrnila imena učencev, ki so pri vsakem od predmetov dobili določeno oceno.
Postopek je skoraj enak zgornjemu. Preveriti moramo celice z ocenami posameznih predmetov in ugotoviti, ali so enake določeni vrednosti ali ne.
Če so, bomo vrnili ime ustreznega učenca.
Spletna stran VBA koda bo:
⧭ Koda VBA:
Funkcija 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
⧭ Izhod:
Koda ustvari funkcijo z imenom Cells_with_Values ki sprejme dva argumenta, a Razpon in Vrednost .
S to funkcijo poiščimo učence, ki so pri vsakem od predmetov dobili 100 točk.
V delovnem listu izberite območje celic in v prvo celico območja vnesite to funkcijo:
=Cells_with_Values(B3:E13,100)
[Tukaj B3:E3 je moj nabor podatkov (vključno z Naslovnice ) in 100 je moja ujemajoča se vrednost. Vi uporabite svojo.]
Nato pritisnite CTRL + SHIFT + ENTER ( Formula polja ). Vrnil bo polje, sestavljeno iz imen učencev, ki so pri vsakem predmetu dobili 100 točk, vključno z Naslovnice .
3. Razvoj uporabniškega obrazca za izvleček vrednosti, če ustrezna celica vsebuje katero koli vrednost (ali določeno vrednost) v programu Excel VBA
Na koncu bomo razvili Uporabniški obrazec izpisati imena študentov, ki so se udeležili določenih izpitov (ali dobili določene ocene).
⧪ Korak 1: Odpiranje uporabniškega obrazca
Pojdite na Insert> UserForm možnost v VBA urednik za odprtje novega Uporabniški obrazec . A new Uporabniški obrazec . UserForm1 se bo odprlo.
⧪ Korak 2: Vlečenje orodij na uporabniški obrazec
Poleg Uporabniški obrazec , boste dobili Zbirka orodij . Premaknite kazalec nad Zbirka orodij in povlecite 4 nalepke (Nalepka1, Nalepka2, Nalepka3, Nalepka4) in . 3 okenca ListBox (ListBox1, ListBox2, ListBox3) in Besedilno polje (TextBox1) v pravokotni obliki nad Uporabniški obrazec .
Nato povlecite drugo Oznaka (Oznaka5) in Besedilno polje (TextBox2) v spodnji levi kot Uporabniški obrazec .
Na koncu povlecite CommandButton (CommandButton1) v spodnji desni kot.
Spremenite prikaze Etikete na . Stolpec za iskanje , Stolpec za vračanje , Katera koli vrednost ali določena vrednost , Vrednost, in . Začetna celica.
Spremenite tudi prikaz CommandButton1 na . V REDU .
⧪ Korak 3: Pisanje kode za ListBox3
Dvakrat kliknite na ListBox3 . A Zasebna podprocedura . ListBox3_Click Odprla se bo. Vnesite naslednjo kodo.
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. korak: Pisanje kode za CommandButton1
Nato dvakrat kliknite na CommandButton1 . drugo Zasebna podprocedura . CommandButton1_Click Odprla se bo. Vnesite naslednjo kodo.
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 Sporočilo: MsgBox "Enter a Valid Cell Reference as the Starting Cell.", vbExclamation End Sub
⧪ 5. korak: Pisanje kode za zagon uporabniškega obrazca
Na koncu vstavite novo Modul iz Orodna vrstica VBA in vanj vstavite naslednjo kodo.
Sub Run_UserForm() UserForm1.Caption = "Filtriranje celic, ki vsebujejo vrednosti" 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. korak: Zagon uporabniškega obrazca (končni rezultat)
Vaš Uporabniški obrazec je zdaj pripravljen za uporabo. Izberite niz podatkov iz delovnega lista ( B3:E13 tukaj) (Vključno z Naslovnice ) in zaženite Makro . Run_UserForm .
Spletna stran Uporabniški obrazec se naloži v delovni list. Iz Stolpec za iskanje v tabeli sem izbral Fizika in . Matematika , ker želim pridobiti imena učencev, ki so se pojavili v Fizika in . Matematika izpiti.
Od Stolpec za vračanje v tabeli sem izbral Ime in priimek učenca , ker želim pridobiti imena učencev.
In iz Katera koli vrednost ali specifična vrednost v tabeli sem izbral Katera koli vrednost .
Nazadnje, v Začetna celica polje, sem dal G3 .
Nato kliknite V REDU . Dobili boste imena učencev, ki so se pojavili v Fizika in . Matematika izpiti, ki se začnejo v celici G3 .
Če bi izbrali Posebna vrednost iz Katera koli vrednost ali specifična vrednost mizo, bi dobili še eno Besedilno polje za vnos določene vrednosti.
Tukaj sem vnesel 100 .
Kliknite . V REDU In dobili boste učence, ki so dobili 100 na spletnem mestu Fizika in . Kemija .
Stvari, ki si jih je treba zapomniti
Uporabili smo dvodimenzionalno polje za vrnitev imen učencev v Funkcija, opredeljena s strani uporabnika opisano v primeru 2 .