Excel VBA: Hvis cellen indeholder en værdi, returneres et specificeret output

  • Del Dette
Hugh West

I denne artikel vil jeg vise dig, hvordan du kan analysere situationen i Excel VBA hvis en celle indeholder en værdi. Du lærer at analysere situationen for både en hvilken som helst værdi og en bestemt værdi.

Excel VBA-analyse: Hvis cellen indeholder en værdi, så (hurtig visning)

 Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo optrådte i fysik eksamen." End If End Sub 

Download arbejdsbog til øvelser

Download denne arbejdsbog til træning, så du kan øve dig, mens du læser denne artikel.

VBA Hvis celle indeholder værdi derefter.xlsm

Excel VBA-analyse: Hvis cellen indeholder en værdi, returneres output (trinvis analyse)

Her har vi et datasæt med karakterer for nogle elever i fysik, kemi og matematik i en skole kaldet Sunflower Kindergarten.

De tomme celler betyder, at den studerende ikke var til stede, dvs. at han/hun var fraværende til den pågældende eksamen. Lad os nu analysere situationen, om en celle indeholder en værdi eller ej, med dette datasæt.

⧪ Trin 1: Angivelse af cellen

Først skal vi angive den celle, hvis værdi vi vil analysere. Lad os analysere, om Jennifer Marlo deltog i fysikprøven eller ej.

Derfor skal vi kontrollere, om celle C12 indeholder en værdi eller ej.

For at gøre det skal vi først erklære celle C12 .

Den kodelinje, der skal bruges til at opnå dette, vil være:

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

⧪ Trin 2: Kontrol af, om cellen indeholder en værdi (herunder en bestemt værdi)

Dernæst skal vi kontrollere, om cellen indeholder en værdi eller ej. Vi udfører dette ved hjælp af en Hvis betingelse Kode-linjen vil være:

 Hvis Cell.Value "" Derefter 

Denne kode vil blive udført, hvis cellen indeholder en værdi. Hvis du vil kontrollere en værdi (f.eks. om den indeholder 100 eller ej), skal du bruge den specifikke værdi med en Lig med symbol.

 Hvis Cell.Value "" Derefter 

⧪ Trin 3: Tildeling af opgaven

Derefter skal du oprette en opgave, der skal udføres, hvis cellen indeholder en værdi (eller en bestemt værdi).

Her ønsker vi at vise meddelelsen "Jennifer Marlo var til eksamen i fysik." Så kodelinjen vil være:

 MsgBox "Jennifer Marlo var til fysikeksamen." 

⧪ Trin 4: Afslutning af If-blokken

Endelig skal du angive en afslutning på If-blokken.

 End If 

Så den komplette VBA kode vil være:

⧭ VBA-kode:

 Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo optrådte i fysik eksamen." End If End Sub 

⧭ Udgang:

Kør denne kode ved at klikke på Kør Sub/UserForm knappen på værktøjslinjen.

Den vil vise meddelelsen "Jennifer Marlo var til eksamen i fysik." som celle C12 indeholder en værdi, af 50 .

Eksempler på Hvis cellen indeholder en værdi, så en specificeret output med Excel VBA

Vi har lært at analysere, om en celle indeholder en værdi eller ej i VBA Lad os nu undersøge nogle eksempler for at gøre forståelsen klar.

1. Udvikling af en makro til at filtrere en værdi fra hvis den tilsvarende celle indeholder en værdi i Excel VBA

Lad os udvikle en Makro for at filtrere de studerende, der deltog i hver af prøverne, fra.

Det vil sige, at vi skal kontrollere de celler, der indeholder karaktererne for hvert af fagene, og se, om de indeholder en værdi eller ej.

Hvis de gør det, skal vi finde frem til navnet på den tilsvarende studerende.

Den komplette VBA kode til at opnå dette vil være:

⧭ VBA-kode:

 Sub Sorting_Out_Cells_that_Contain_Values() Starting_Cell = InputBox("Indtast referencen til den første celle i de filtrerede 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 

⧭ Udgang:

Vælg datasættet (herunder den Overskrifter ) og køre dette Makro .

Først bliver du bedt om at indtaste referencen til den første celle, hvor du vil have de filtrerede data. Jeg har indtastet G3 .

Klik derefter på OK Du får navnene på de studerende, der deltog i hver af prøverne (herunder de Overskrifter ) i et nyt datasæt, der starter fra celle G3 .

2. Oprettelse af en brugerdefineret funktion til at sortere en værdi fra, hvis den tilsvarende celle indeholder en bestemt værdi i Excel VBA

Nu opretter vi en brugerdefineret funktion, der returnerer navnene på de elever, der har fået en bestemt karakter i hvert af fagene.

Proceduren er næsten den samme som ovenfor. Vi skal kontrollere de celler, der indeholder karaktererne for hvert af fagene, og se, om de er lig med en bestemt værdi eller ej.

Hvis de er det, returnerer vi navnet på den tilsvarende elev.

VBA kode vil være:

⧭ VBA-kode:

 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 j Next i Cells_with_Values = Output End Function 

⧭ Udgang:

Koden opretter en funktion kaldet Celler_med_værdier der tager to argumenter, en Område og en Værdi .

Lad os finde ud af, hvilke elever der har fået 100 i hvert af fagene ved hjælp af denne funktion.

Vælg en række celler i dit regneark, og indtast denne funktion i den første celle i rækken:

=Cells_with_Values(B3:E13,100)

[Her B3:E3 er mit datasæt (herunder den Overskrifter ) og 100 er min matchende værdi. Du bruger din.]

Tryk derefter på CTRL + SHIFT + ENTER ( Array-formel ). Den returnerer et array bestående af navnene på de elever, der har fået 100 i hvert fag, herunder Overskrifter .

3. Udvikling af en UserForm til at udtrække en værdi, hvis den tilsvarende celle indeholder en værdi (eller en bestemt værdi) i Excel VBA

Endelig vil vi udvikle en UserForm at udtrække navnene på de studerende, der har deltaget (eller har fået bestemte karakterer) i nogle bestemte eksamener.

⧪ Trin 1: Åbning af brugerformularen

Gå til Indsæt> UserForm i VBA editor for at åbne en ny UserForm . En ny UserForm kaldet UserForm1 vil blive åbnet.

⧪ Trin 2: Træk værktøjer til brugerformularen

Ud over den UserForm , får du den Værktøjskasse Før markøren hen over den Værktøjskasse og trække 4 etiketter (Label1, Label2, Label3, Label4) og 3 listebokse (ListBox1, ListBox2, ListBox3) og en Tekstboks (Tekstboks1) i en rektangulær form over den UserForm .

Træk derefter en anden Etiket (Label5) og en Tekstboks (Tekstboks2) til nederste venstre hjørne af UserForm .

Endelig skal du trække et CommandButton (CommandButton1) i nederste højre hjørne.

Ændre visningerne af de Etiketter til Opslagskolonne , Returneringskolonne , Enhver værdi eller en bestemt værdi , Værdi, og Startcelle.

Du kan også ændre visningen af CommandButton1 til OK .

⧪ Trin 3: Skrivning af kode til ListBox3

Dobbeltklik på ListBox3 . A Privat underprocedure kaldet ListBox3_Click åbnes. Indtast følgende kode der.

 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 

⧪ Trin 4: Skrivning af kode til CommandButton1

Dobbeltklik derefter på CommandButton1 . en anden Privat underprocedure kaldet CommandButton1_Click åbnes. Indtast følgende kode der.

 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 Til 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 "Indtast en gyldig cellehenvisning som startcelle.", vbExclamation End Sub 

⧪ Trin 5: Skrive kode til at køre brugerformularen

Endelig indsættes en ny Modul fra den VBA-værktøjslinje og indsæt følgende kode der.

 Sub Run_UserForm() UserForm1.Caption = "Filtrering af celler, der indeholder værdier" 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 UserForm1.Show End Sub 

⧪ Trin 6: Kørsel af brugerformularen (det endelige output)

Din UserForm er nu klar til brug. Vælg datasættet fra regnearket ( B3:E13 her) (herunder den Overskrifter ) og køre den Makro kaldet Run_UserForm .

UserForm vil blive indlæst i regnearket. Fra den Opslagskolonne tabel, har jeg valgt Fysik og Matematik , fordi jeg ønsker at få de navne på de studerende, der optrådte i Fysik og Matematik eksamener.

Fra den Returneringskolonne tabel, har jeg valgt Navn på den studerende , fordi jeg ønsker at få fat i elevernes navne.

Og fra den Enhver værdi eller specifik værdi tabel, har jeg valgt Enhver værdi .

Endelig, i den Startcelle boks, har jeg sat G3 .

Klik derefter på OK Du får navnene på de studerende, der har været med i Fysik og Matematik eksamener fra celle G3 .

Hvis du havde valgt Specifik værdi fra den Enhver værdi eller specifik værdi bordet, ville du have fået en anden Tekstboks for at indtaste den specifikke værdi.

Her har jeg indtastet 100 .

Klik på OK . og du får de elever, der fik 100 Fysik og Kemi .

Ting at huske

Vi brugte et todimensionelt array til at returnere elevernes navne i Brugerdefineret funktion beskrevet i eksempel 2 .

Hugh West er en meget erfaren Excel-træner og analytiker med over 10 års erfaring i branchen. Han har en bachelorgrad i regnskab og finans og en kandidatgrad i Business Administration. Hugh har en passion for undervisning og har udviklet en unik undervisningstilgang, der er nem at følge og forstå. Hans ekspertviden om Excel har hjulpet tusindvis af studerende og fagfolk verden over med at forbedre deres færdigheder og udmærke sig i deres karriere. Gennem sin blog deler Hugh sin viden med verden og tilbyder gratis Excel-tutorials og onlinetræning for at hjælpe enkeltpersoner og virksomheder med at nå deres fulde potentiale.