Cuprins
În acest articol, vă voi arăta cum puteți analiza situația în Excel. VBA dacă o celulă conține o valoare. Veți învăța să analizați situația atât pentru orice valoare, cât și pentru o anumită valoare.
Excel VBA Analysis: Dacă celula conține o valoare, atunci (Vizualizare rapidă)
Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo a apărut la examenul de fizică." End If End Sub
Descărcați caietul de practică
Descărcați acest caiet de exerciții pentru a vă exercita în timp ce citiți acest articol.
VBA Dacă celula conține o valoare atunci.xlsmExcel VBA Analysis: Dacă celula conține o valoare, atunci returnează ieșirile (analiză pas cu pas)
Aici avem un set de date cu notele unor elevi la fizică, chimie și matematică dintr-o școală numită Grădinița Floarea Soarelui.
Celulele goale înseamnă că studentul nu s-a prezentat, adică a fost absent la examenul respectiv. Acum să analizăm situația, dacă o celulă conține sau nu o valoare, cu acest set de date.
⧪ Pasul 1: Declararea celulei
În primul rând, trebuie să declarăm celula a cărei valoare dorim să o analizăm. Să analizăm dacă Jennifer Marlo s-a prezentat sau nu la examenul de fizică.
Prin urmare, trebuie să verificăm dacă celula C12 conține sau nu o valoare.
Pentru a face acest lucru, mai întâi, trebuie să declarăm celula C12 .
Linia de cod pentru a realiza acest lucru va fi:
Set Cell = Range("C12").Cells(1, 1)
⧪ Pasul 2: Verificarea dacă celula conține o valoare (inclusiv o anumită valoare)
În continuare, trebuie să verificăm dacă celula conține sau nu o valoare. Vom executa acest lucru folosind un În cazul în care condiția Linia de cod va fi:
Dacă Cell.Value "" Atunci
Acest cod va fi executat dacă celula conține o valoare oarecare. Pentru a verifica o valoare (de exemplu, dacă conține 100 sau nu), utilizați acea valoare specifică cu ajutorul unui Egal cu simbol.
Dacă Cell.Value "" Atunci
⧪ Pasul 3: Alocarea sarcinii
Apoi trebuie să configurați o sarcină care va fi executată dacă celula conține o valoare (sau o anumită valoare).
Aici, dorim să afișăm mesajul "Jennifer Marlo a apărut la examenul de fizică." Deci, linia de cod va fi:
MsgBox "Jennifer Marlo a apărut la examenul de fizică."
⧪ Pasul 4: Încheierea blocului If
În cele din urmă, trebuie să declarați un sfârșit pentru blocul If.
End If
Deci, întregul VBA codul va fi:
⧭ Cod VBA:
Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo a apărut la examenul de fizică." End If End Sub
⧭ Ieșire:
Rulați acest cod făcând clic pe butonul Rulați Sub/UserForm de pe bara de instrumente.
Se va afișa mesajul "Jennifer Marlo a apărut la examenul de fizică." ca celulă C12 conține o valoare, de 50 .
Exemple care implică Dacă celula conține o valoare, atunci o ieșire specificată cu Excel VBA
Am învățat să analizăm dacă o celulă conține sau nu o valoare în VBA Acum, să explorăm câteva exemple pentru a clarifica înțelegerea.
1. Dezvoltarea unui macro pentru a filtra o valoare Dacă celula corespunzătoare conține orice valoare, atunci în Excel VBA
Să dezvoltăm un Macro pentru a filtra studenții care s-au prezentat la fiecare dintre examene.
Adică, trebuie să verificăm celulele care conțin notele pentru fiecare dintre subiecte și să vedem dacă acestea conțin sau nu o valoare.
Dacă da, atunci trebuie să aflăm numele elevului corespunzător.
Complet VBA codul pentru a realiza acest lucru va fi:
⧭ Cod VBA:
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
⧭ Ieșire:
Selectați setul de date (inclusiv Capetele ) și executați acest lucru Macro .
În primul rând, vi se va cere să introduceți referința primei celule în care doriți datele filtrate. Eu am introdus G3 .
Apoi faceți clic pe OK . veți obține numele studenților care s-au prezentat la fiecare dintre examene (Inclusiv cele ale Capetele ) într-un nou set de date începând cu celula G3 .
2. Crearea unei funcții definite de utilizator pentru a sorta o valoare Dacă celula corespunzătoare conține o anumită valoare, atunci în Excel VBA
Acum vom crea o funcție definită de utilizator care va returna numele studenților care au obținut o anumită notă la fiecare dintre discipline.
Procedura este aproape la fel ca cea de mai sus. Trebuie să verificăm celulele care conțin notele de la fiecare subiect și să vedem dacă acestea sunt egale sau nu cu o anumită valoare.
Dacă da, atunci vom returna numele elevului corespunzător.
The VBA codul va fi:
⧭ Cod 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
⧭ Ieșire:
Codul creează o funcție numită Celule_cu_valori care primește două argumente, un Gama și un Valoare .
Să aflăm elevii care au obținut 100 la fiecare dintre subiecte folosind această funcție.
Selectați un interval de celule din foaia de calcul și introduceți această funcție în prima celulă a intervalului:
=Cells_with_Values(B3:E13,100)
[Aici B3:E3 este setul meu de date (Inclusiv Capetele ) și 100 este valoarea mea de potrivire. Folosește-o pe a ta.]
Apoi apăsați CTRL + SHIFT + ENTER ( Formula Array ). Se va returna un tablou format din numele elevilor care au obținut 100 la fiecare materie, inclusiv Capetele .
3. Dezvoltarea unui UserForm pentru a extrage o valoare dacă celula corespunzătoare conține orice valoare (sau o valoare specifică) în Excel VBA
În cele din urmă, vom dezvolta un UserForm pentru a extrage numele studenților care s-au prezentat (sau au obținut anumite note) la anumite examene.
⧪ Pasul 1: Deschiderea formularului de utilizator
Mergeți la Insert> UserForm din cadrul opțiunii VBA pentru a deschide un nou editor UserForm . un nou UserForm numit UserForm1 va fi deschis.
⧪ Pasul 2: Tragerea instrumentelor în formularul de utilizator
În afară de UserForm , veți obține Cutia de instrumente Deplasați cursorul peste Cutia de instrumente și trageți 4 etichete (Label1, Label2, Label3, Label4) și 3 ListBox-uri (ListBox1, ListBox2, ListBox3) și un TextBox (TextBox1) în formă dreptunghiulară peste UserForm .
Apoi trageți un alt Etichetă (Label5) și un TextBox (TextBox2) în colțul din stânga jos al UserForm .
În cele din urmă, trageți un CommandButton (CommandButton1) în colțul din dreapta jos.
Modificați afișajele din Etichete la Coloană de căutare , Coloana de retur , Orice valoare sau o valoare specifică , Valoare, și Celula de pornire.
De asemenea, modificați afișajul din CommandButton1 la OK .
⧪ Pasul 3: Scrierea codului pentru ListBox3
Faceți dublu clic pe ListBox3 . A Subprocedură privată numit ListBox3_Click Introduceți acolo următorul cod.
Private Sub ListBox3_Click() If UserForm1.ListBox3.Selected(0) = True Then UserForm1.Label4.Visible = False UserForm1.TextBox1.Visible = False ElseFif UserForm1.ListBox3.Selected(1) = True Then UserForm1.Label4.Visible = True UserForm1.TextBox1.Visible = True End If End Sub
⧪ Pasul 4: Scrierea codului pentru CommandButton1
Apoi faceți dublu clic pe CommandButton1 . altul Subprocedură privată numit CommandButton1_Click Introduceți acolo următorul cod.
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 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 Message: MsgBox "Introduceți o referință validă de celulă ca celulă de pornire.", vbExclamation End Sub
⧪ Pasul 5: Scrierea codului pentru rularea formularului de utilizator
În cele din urmă, introduceți un nou Modul de la Bara de instrumente VBA și introduceți acolo următorul cod.
Sub Run_UserForm() UserForm1.Caption = "Filtrarea celulelor care conțin valori" UserForm1.ListBox1.BorderStyle = fmBorderStyleSingle UserForm1.ListBox1.ListStyle = fmListStyleOption UserForm1.ListBox2.BorderStyle = fmBorderStyleSingle UserForm1.ListBox2.ListStyle = fmListStyleOption UserForm1.ListBox3.BorderStyle = fmBorderStyleSingle UserForm1.ListBox3.ListStyleStyle = 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 UserForm1.Show End Sub
⧪ Pasul 6: Rularea formularului de utilizator (rezultatul final)
UserForm este acum gata de utilizare. Selectați setul de date din foaia de lucru ( B3:E13 aici) (Inclusiv Capetele ) și rulați programul Macro numit Run_UserForm .
The UserForm va fi încărcată în foaia de lucru. Din fereastra Coloană de căutare tabel, am selectat Fizică și Matematică , pentru că vreau să obțin numele elevilor care au apărut în Fizică și Matematică examene.
De la Coloana de retur tabel, am selectat Numele elevului , deoarece vreau să obțin numele elevilor.
Și de la Orice valoare sau valoare specifică tabel, am selectat Orice valoare .
În cele din urmă, în Celula de pornire cutie, am pus G3 .
Apoi faceți clic pe OK . veți primi numele elevilor care au apărut în Fizică și Matematică examene pornind de la celulă G3 .
Dacă ați selectat Valoare specifică de la Orice valoare sau valoare specifică tabel, ați fi obținut un alt TextBox pentru a introduce valoarea specifică.
Aici am introdus 100 .
Faceți clic pe OK . Și veți primi studenții care au primit 100 în Fizică și Chimie .
Lucruri de reținut
Am folosit o matrice bidimensională pentru a returna numele studenților din Funcție definită de utilizator descrisă în exemplul 2 .