Excel VBA: Kui lahter sisaldab väärtust, siis tagastage määratud väljund

  • Jaga Seda
Hugh West

Selles artiklis näitan teile, kuidas saate olukorda Excelis analüüsida. VBA kui lahter sisaldab väärtust. Õpid analüüsima olukorda nii mis tahes väärtuse kui ka konkreetse väärtuse puhul.

Exceli VBA analüüs: Kui lahter sisaldab väärtust, siis (kiire vaade)

 Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo ilmus füüsika eksamile." End If End Sub 

Lae alla praktiline töövihik

Lae alla see harjutusvihik, et seda artiklit lugedes harjutada.

VBA Kui lahter sisaldab väärtust Then.xlsm

Exceli VBA analüüs: Kui lahter sisaldab väärtust, siis tagastage väljundid (samm-sammuline analüüs)

Siin on esitatud andmekogum, mis sisaldab mõningate õpilaste hindeid füüsika, keemia ja matemaatika erialadel koolis nimega Päikeselille lasteaed.

Tühjad lahtrid tähendavad, et õpilane ei ilmunud, st puudus sellel konkreetsel eksamil. Analüüsime nüüd selle andmestiku abil olukorda, kas lahter sisaldab väärtust või mitte.

⧪ 1. samm: raku deklareerimine

Kõigepealt peame deklareerima lahtri, mille väärtust tahame analüüsida. Analüüsime, kas Jennifer Marlo ilmus füüsika eksamile või mitte.

Seetõttu peame kontrollima, kas raku C12 sisaldab väärtust või mitte.

Selleks peame kõigepealt deklareerima lahtri C12 .

Selle saavutamiseks on koodirida järgmine:

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

⧪ 2. samm: Kontrollida, kas lahter sisaldab väärtust (sealhulgas teatud väärtust).

Järgmisena peame kontrollima, kas lahter sisaldab väärtust või mitte. Me teostame seda kasutades Kui tingimus Koodirida on järgmine:

 If Cell.Value "" Then 

See kood käivitub, kui lahter sisaldab mingit väärtust. Et kontrollida mingit väärtust (näiteks, kas see sisaldab 100 või mitte), kasutage seda konkreetset väärtust koos sümboliga Võrdne sümbol.

 If Cell.Value "" Then 

⧪ 3. samm: ülesande jaotamine

Seejärel tuleb luua ülesanne, mis käivitub, kui lahter sisaldab väärtust (või kindlat väärtust).

Siinkohal tahame kuvada sõnumit "Jennifer Marlo ilmus füüsika eksamile." Nii et koodirida on:

 MsgBox "Jennifer Marlo ilmus füüsika eksamile." 

⧪ 4. samm: If-bloki lõpetamine

Lõpuks tuleb deklareerida If-bloki lõpp.

 End If 

Nii et täielik VBA kood on:

⧭ VBA kood:

 Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo ilmus füüsika eksamile." End If End Sub 

⧭ Väljund:

Käivitage see kood, klõpsates Run Sub/UserForm nuppu tööriistaribal.

See kuvab teate "Jennifer Marlo ilmus füüsika eksamile." kui rakk C12 sisaldab väärtust, mis on 50 .

Näited, mis hõlmavad Kui lahter sisaldab väärtust, siis määratud väljund Excel VBAga

Me oleme õppinud analüüsima, kas lahter sisaldab väärtust või ei sisalda VBA Uurime nüüd mõningaid näiteid, et teha arusaamine selgeks.

1. Makro väljatöötamine, et filtreerida väärtus välja, kui vastav lahter sisaldab Excel VBAs mis tahes väärtust.

Töötame välja Makro filtreerida välja õpilased, kes ilmusid igale eksamile.

See tähendab, et me peame kontrollima iga teema hindeid sisaldavaid lahtreid ja vaatama, kas need sisaldavad väärtust või mitte.

Kui nad seda teevad, siis peame välja selgitama vastava õpilase nime.

Täielik VBA kood selle saavutamiseks on:

⧭ VBA kood:

 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 

⧭ Väljund:

Valige andmekogum (sealhulgas Pealkirjad ) ja käivitage see Makro .

Kõigepealt palutakse sisestada viide esimesele lahtrisse, kuhu soovite filtreeritud andmeid. Ma sisestasin G3 .

Seejärel klõpsake OK Te saate iga eksamile ilmunud õpilaste nimed (sh. Pealkirjad ) uues andmekogumis alates lahtrist G3 .

2. Kasutaja määratud funktsiooni loomine väärtuse sorteerimiseks, kui vastav lahter sisaldab konkreetset väärtust, siis Excel VBAs

Nüüd loome kasutajapoolse funktsiooni, mis tagastab nende õpilaste nimed, kes said igas õppeaines kindla hinde.

Protseduur on peaaegu sama, mis eespool. Peame kontrollima iga aine hindeid sisaldavaid lahtreid ja vaatama, kas need on võrdsed teatud väärtusega või mitte.

Kui see on nii, siis tagastame vastava õpilase nime.

The VBA kood on:

⧭ VBA kood:

 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 

⧭ Väljund:

Kood loob funktsiooni nimega Cells_with_Values mis võtab kaks argumenti, a Range ja Väärtus .

Leiame selle funktsiooni abil välja õpilased, kes said igas õppeaines 100.

Valige oma töölehel lahtrite vahemik ja sisestage see funktsioon vahemiku esimesse lahtrisse:

=Cells_with_Values(B3:E13,100)

[Siin B3:E3 on minu andmekogum (sealhulgas Pealkirjad ) ja 100 on minu vastav väärtus. Teie kasutage oma väärtust.]

Seejärel vajutage CTRL + SHIFT + ENTER ( Array valem ). See tagastab massiivi, mis koosneb nende õpilaste nimedest, kes said igas õppeaines 100 punkti, kaasa arvatud Pealkirjad .

3. UserFormi arendamine väärtuse väljavõtmiseks, kui vastav lahter sisaldab mis tahes väärtust (või konkreetset väärtust) Excel VBAs

Lõpuks töötame välja UserForm väljavõtete tegemiseks nende õpilaste nimed, kes osalesid (või said konkreetsed hinded) mõnel konkreetsel eksamil.

⧪ 1. samm: kasutajavormi avamine

Minge Insert> UserForm valikust VBA redaktorit, et avada uus UserForm Uus UserForm nimega UserForm1 avatakse.

⧪ 2. samm: Tööriistade lohistamine kasutajavormile

Lisaks UserForm , saate te Tööriistakast Liigutage kursor üle Tööriistakast ja lohistada 4 sildi (Silt1, Silt2, Silt3, Silt4) ja 3 ListBoxi (ListBox1, ListBox2, ListBox3) ja Tekstikast (TextBox1) ristkülikukujuline üle UserForm .

Seejärel lohistage veel üks Silt (Label5) ja Tekstikast (TextBox2) vasakusse alumisse nurka UserForm .

Lõpuks lohistage CommandButton (CommandButton1) paremasse alumisse nurka.

Muutke näidikuid Märgised aadressile Vaadake veergu , Tagasi veerg , Mis tahes väärtus või konkreetne väärtus , Väärtus, ja Alustava raku.

Muutke ka kuvamist CommandButton1 aadressile OK .

⧪ 3. samm: ListBox3 koodi kirjutamine

Topeltklõpsake nupul ListBox3 . A Privaatne alamprotseduur nimega ListBox3_Click avaneb. Sisestage sinna järgmine kood.

 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. samm: CommandButton1 koodi kirjutamine

Seejärel topeltklõpsake nupul CommandButton1 . teine Privaatne alamprotseduur nimega CommandButton1_Click avaneb. Sisestage sinna järgmine kood.

 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 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 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 "Enter a Valid Cell Reference as the Starting Cell.", vbExclamation End Sub 

⧪ 5. samm: Kasutajavormi käivitamise koodi kirjutamine

Lõpuks sisestage uus Moodul alates VBA tööriistariba ja sisestage sinna järgmine kood.

 Sub Run_UserForm() UserForm1.Caption = "Filtering Cells that Contain Values" 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. samm: UserFormi käivitamine (lõplik väljund)

Teie UserForm on nüüd kasutusvalmis. Valige andmekogum töölehel ( B3:E13 siin) (sealhulgas Pealkirjad ) ja käivitada Makro nimega Run_UserForm .

The UserForm laaditakse töölehele. Alates Vaadake veergu tabelis, olen valinud Füüsika ja Matemaatika , sest ma tahan saada õpilaste nimesid, kes ilmusid Füüsika ja Matemaatika eksamid.

Alates Tagasi veerg tabelis, olen valinud Õpilase nimi , sest ma tahan saada õpilaste nimesid.

Ja alates Mis tahes väärtus või konkreetne väärtus tabelis, olen valinud Mis tahes väärtus .

Lõpuks on Alustades raku kasti olen pannud G3 .

Seejärel klõpsake OK . Saate nende õpilaste nimed, kes ilmusid aastal Füüsika ja Matemaatika eksamid alates lahtrist G3 .

Kui te oleksite valinud Konkreetne väärtus alates Mis tahes väärtus või konkreetne väärtus tabelis, oleksite saanud teise Tekstikast sisestada konkreetne väärtus.

Siin olen sisestanud 100 .

Klõpsake OK Ja sa saad õpilased, kes said 100 aadressil Füüsika ja Keemia .

Asjad, mida meeles pidada

Me kasutasime kahemõõtmelist massiivi, et tagastada õpilaste nimed aastal Kasutaja määratud funktsioon kirjeldatud näites 2 .

Hugh West on suurte kogemustega Exceli koolitaja ja analüütik, kellel on selles valdkonnas üle 10-aastane kogemus. Tal on raamatupidamise ja rahanduse bakalaureusekraad ning ärijuhtimise magistrikraad. Hugh’l on kirg õpetamise vastu ning ta on välja töötanud ainulaadse õpetamisviisi, mida on lihtne järgida ja mõista. Tema Exceli ekspertteadmised on aidanud tuhandetel õpilastel ja spetsialistidel üle maailma oma oskusi parandada ja karjääris silma paista. Oma ajaveebi kaudu jagab Hugh oma teadmisi maailmaga, pakkudes tasuta Exceli õpetusi ja veebikoolitusi, mis aitavad üksikisikutel ja ettevõtetel oma potentsiaali täielikult ära kasutada.