Excel VBA: Ja šūnā ir vērtība, tad atgrieziet norādīto rezultātu

  • Dalīties Ar Šo
Hugh West

Šajā rakstā parādīšu, kā varat analizēt situāciju programmā Excel. VBA ja šūnā ir kāda vērtība. Jūs iemācīsieties analizēt situāciju gan attiecībā uz jebkuru vērtību, gan konkrētu vērtību.

Excel VBA analīze: Ja šūnā ir vērtība, tad (ātrs skats)

 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 

Lejupielādēt Practice Workbook

Lejupielādējiet šo prakses darba burtnīcu, lai vingrinātos, kamēr lasāt šo rakstu.

VBA Ja šūna satur vērtību Then.xlsm

Excel VBA analīze: Ja šūnā ir vērtība, tad atgriezt izejas (soli pa solim)

Šeit mums ir datu kopa ar dažu skolēnu atzīmēm fizikā, ķīmijā un matemātikā skolā ar nosaukumu Saulespuķu bērnudārzs.

Tukšās šūnas nozīmē, ka students nav ieradies, tas ir, nav piedalījies konkrētajā eksāmenā. Tagad analizēsim situāciju, vai šūnā ir vai nav kāda vērtība, izmantojot šo datu kopu.

⧪ 1. solis: šūnas deklarēšana

Vispirms ir jādeklarē šūna, kuras vērtību vēlamies analizēt. Analizēsim, vai Jennifer Marlo piedalījās fizikas eksāmenā vai ne.

Tāpēc mums ir jāpārbauda, vai šūna C12 satur vērtību vai nē.

Lai to izdarītu, vispirms ir jādeklarē šūna C12 .

Lai to paveiktu, tiks izveidota šāda koda rinda:

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

⧪ 2. solis: pārbaude, vai šūnā ir vērtība (tostarp konkrēta vērtība)

Tālāk mums ir jāpārbauda, vai šūnā ir vai nav vērtība. Mēs to izpildīsim, izmantojot an Ja nosacījums . Koda rinda būs šāda:

 Ja Cell.Value "" Tad 

Šis kods tiks izpildīts, ja šūnā ir kāda vērtība. Lai pārbaudītu vērtību (Piemēram, vai tajā ir 100 vai nav), izmantojiet šo konkrēto vērtību ar Vienāds ar simbols.

 Ja Cell.Value "" Tad 

⧪ 3. solis: uzdevuma piešķiršana

Pēc tam ir jāiestata uzdevums, kas tiks izpildīts, ja šūnā būs vērtība (vai noteikta vērtība).

Šeit mēs vēlamies parādīt ziņojumu "Jennifer Marlo parādījās fizikas eksāmenā." . Tātad kods būs šāds:

 MsgBox "Jennifer Marlo piedalījās fizikas eksāmenā." 

⧪ 4. solis: If bloka beigas

Visbeidzot, ir jādeklarē If bloka beigas.

 End If 

Tātad pilnīga VBA kods būs:

⧭ VBA kods:

 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 

⧭ Izvades:

Palaidiet šo kodu, noklikšķinot uz Run Sub/UserForm pogu rīkjoslā.

Tiks parādīts ziņojums "Jennifer Marlo parādījās fizikas eksāmenā." kā šūna C12 satur vērtību, kas ir 50 .

Piemēri, kas ietver Ja šūnā ir vērtība, tad norādītais izvads ar Excel VBA

Mēs esam iemācījušies analizēt, vai šūnā ir vērtība vai nav, izmantojot VBA . Tagad aplūkosim dažus piemērus, lai izpratne būtu skaidra.

1. Izstrādāt makroprogrammu, lai izfiltrētu vērtību, ja atbilstošajā šūnā ir kāda vērtība, tad Excel VBA programmā

Izstrādāsim Makro lai atlasītu skolēnus, kuri piedalījās katrā no eksāmeniem.

Tas nozīmē, ka mums ir jāpārbauda šūnas, kurās ir katra priekšmeta atzīmes, un jāpārbauda, vai tajās ir vērtība vai nav.

Ja tas tā ir, tad mums ir jānoskaidro atbilstošā skolēna vārds.

Pilnīga VBA Kods, lai to paveiktu, būs šāds:

⧭ VBA kods:

 Sub Sorting_Out_Cells_that_Contain_Values() Starting_Cell = InputBox("Ievadiet filtrēto datu pirmās šūnas atsauci: ") 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 

⧭ Izvades:

Izvēlieties datu kopu (tostarp Virsraksti ) un palaist šo Makro .

Vispirms jums būs jāievada atsauce uz pirmo šūnu, kurā vēlaties ievadīt filtrētos datus. Es esmu ievadījis G3 .

Pēc tam noklikšķiniet uz LABI . Iegūsiet to skolēnu vārdus, kuri piedalījās katrā no eksāmeniem (tostarp Virsraksti ) jaunā datu kopā, sākot no šūnas G3 .

2. Lietotāja definētas funkcijas izveide, lai sakārtotu vērtību, ja atbilstošajā šūnā ir konkrēta vērtība, tad Excel VBA.

Tagad mēs izveidosim lietotāja definētu funkciju, kas atgriezīs to skolēnu vārdus, kuri katrā priekšmetā ieguvuši konkrētu atzīmi.

Procedūra ir gandrīz tāda pati kā iepriekš. Mums ir jāpārbauda šūnas, kurās ir katra priekšmeta atzīmes, un jāpārbauda, vai tās ir vienādas ar konkrētu vērtību.

Ja tie ir, tad mēs atgriežam atbilstošā skolēna vārdu.

Portāls VBA kods būs:

⧭ VBA kods:

 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 Tad 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 

⧭ Izvades:

Kods izveido funkciju ar nosaukumu Cells_with_Values kas pieņem divus argumentus, a Diapazons un Vērtība .

Izmantojot šo funkciju, noskaidrosim skolēnus, kuri katrā priekšmetā ieguvuši 100.

Darba lapā atlasiet šūnu diapazonu un ievadiet šo funkciju diapazona pirmajā šūnā:

=Cells_with_Values(B3:E13,100)

[Šeit B3: E3 ir mans datu kopums (ieskaitot Virsraksti ) un 100 ir mana atbilstošā vērtība. Jūs izmantojiet savu.]

Pēc tam nospiediet CTRL + SHIFT + ENTER ( Masuļa formula ). Tas atgriezīs masīvu, kas sastāv no to skolēnu vārdiem, kuri katrā priekšmetā ieguvuši 100 ballu, ieskaitot Virsraksti .

3. Lietotāja veidlapas izveide, lai izvilktu vērtību, ja atbilstošajā šūnā ir kāda vērtība (vai konkrēta vērtība) programmā Excel VBA

Visbeidzot, mēs izstrādāsim Lietotāja veidlapa lai iegūtu to skolēnu vārdus, kuri ieradušies (vai saņēmuši konkrētas atzīmes) konkrētos eksāmenos.

⧪ 1. solis: lietotāja veidlapas atvēršana

Dodieties uz Insert> UserForm opcija VBA redaktoru, lai atvērtu jaunu Lietotāja veidlapa Jauns Lietotāja veidlapa ko sauc par Lietotāja veidlapa1 tiks atvērts.

⧪ 2. solis: rīku vilkšana uz lietotāja veidlapu

Papildus Lietotāja veidlapa , jūs saņemsiet Toolbox . Pārvietojiet kursoru virs Toolbox un velciet 4 etiķetes (Label1, Label2, Label3, Label4) un 3 ListBox (ListBox1, ListBox2, ListBox3) un Teksta logs (TextBox1) taisnstūrveida formā virs Lietotāja veidlapa .

Pēc tam velciet citu Etiķete (Label5) un Teksta lodziņš (TextBox2) apakšējā kreisajā stūrī Lietotāja veidlapa .

Visbeidzot velciet Komandu poga (CommandButton1) apakšējā labajā stūrī.

Mainīt displejus Etiķetes uz Meklēšanas sleja , Atgriešanās sleja , Jebkura vērtība vai konkrēta vērtība , Vērtība, un Sākuma šūna.

Mainiet arī displeja CommandButton1 uz LABI .

⧪ 3. solis: ListBox3 koda rakstīšana

Divreiz noklikšķiniet uz ListBox3 . A Privāta apakšprocedūra ko sauc par ListBox3_Click Atvērsies programma. Tajā ievadiet šādu kodu.

 Private Sub ListBox3_Click() Ja UserForm1.ListBox3.Selected(0) = True Tad UserForm1.Label4.Visible = False UserForm1.TextBox1.Visible = False ElseIf UserForm1.ListBox3.Selected(1) = True Tad UserForm1.Label4.Visible = True UserForm1.TextBox1.Visible = True End If End Sub 

⧪ 4. solis: CommandButton1 koda rakstīšana

Pēc tam divreiz noklikšķiniet uz CommandButton1 . cits Privāta apakšprocedūra ko sauc par CommandButton1_Click Atvērsies programma. Tajā ievadiet šādu kodu.

 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 Ja 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 "Izvēlieties jebkuru vērtību vai konkrētu vērtību.", vbExclamation Exit For End If Next j Count3 = 2 Count2 = Count2+ 1 End If Next i Exit Sub Message: MsgBox "Ievadiet derīgu šūnas atsauci kā sākuma šūnu.", vbExclamation End Sub End Sub 

⧪ 5. solis: lietotāja veidlapas palaišanas koda rakstīšana

Visbeidzot, ievietojiet jaunu Modulis no VBA rīkjosla un ievietojiet tajā šādu kodu.

 Sub Run_UserForm() UserForm1.Caption = "Filtrēšana šūnās, kas satur vērtības" 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 ielādēt UserForm1 UserForm1 UserForm1.Show End Sub 

⧪ 6. solis: Lietotāja veidlapas palaišana (galīgais rezultāts)

Jūsu Lietotāja veidlapa tagad ir gatavs lietošanai. Atlasiet datu kopu no darblapas ( B3:E13 šeit) (ieskaitot Virsraksti ) un palaidiet Makro ko sauc par Run_UserForm .

Portāls Lietotāja veidlapa tiks ielādēts darblapā. No Meklēšanas sleja tabulā esmu izvēlējies Fizika un Matemātika , jo es gribu iegūt skolēnu vārdus, kuri parādījās Fizika un Matemātika eksāmeni.

No Atgriešanās sleja tabulā esmu izvēlējies Skolēna vārds , jo es gribu iegūt skolēnu vārdus.

Un no Jebkura vērtība vai konkrēta vērtība tabulā esmu izvēlējies Jebkura vērtība .

Visbeidzot. Sākuma šūna lodziņā esmu ielicis G3 .

Pēc tam noklikšķiniet uz LABI . Jūs saņemsiet to skolēnu vārdus, kuri parādījās Fizika un Matemātika eksāmeni, sākot no šūnas G3 .

Ja būtu izvēlēts Īpašā vērtība no Jebkura vērtība vai konkrēta vērtība tabulu, jūs būtu ieguvuši vēl vienu TextBox lai ievadītu konkrētu vērtību.

Šeit es esmu ievadījis 100 .

Noklikšķiniet uz LABI . Un jūs saņemsiet skolēnus, kuri ieguva 100 vietnē Fizika un Ķīmija .

Lietas, kas jāatceras

Mēs izmantojām divdimensiju masīvu, lai atgrieztu skolēnu vārdus no Lietotāja definēta funkcija aprakstīts piemērā 2 .

Hjū Vests ir ļoti pieredzējis Excel treneris un analītiķis ar vairāk nekā 10 gadu pieredzi šajā nozarē. Viņam ir bakalaura grāds grāmatvedībā un finansēs un maģistra grāds uzņēmējdarbības vadībā. Hjū aizraujas ar mācīšanu, un viņš ir izstrādājis unikālu mācīšanas pieeju, kas ir viegli izpildāma un saprotama. Viņa ekspertu zināšanas programmā Excel ir palīdzējušas tūkstošiem studentu un profesionāļu visā pasaulē uzlabot savas prasmes un izcelties karjerā. Izmantojot savu emuāru, Hjū dalās savās zināšanās ar pasauli, piedāvājot bezmaksas Excel apmācības un tiešsaistes apmācību, lai palīdzētu personām un uzņēmumiem pilnībā izmantot savu potenciālu.