Excel VBA: Jos solu sisältää arvon, palauta määritetty tuloste

  • Jaa Tämä
Hugh West

Tässä artikkelissa näytän, miten voit analysoida tilannetta Excelissä. VBA jos solu sisältää arvon. Opit analysoimaan tilannetta sekä minkä tahansa arvon että tietyn arvon osalta.

Excel VBA -analyysi: Jos solu sisältää arvon (Pikakatselu)

 Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo esiintyi fysiikan kokeessa." End If End Sub 

Lataa harjoituskirja

Lataa tämä harjoituskirja, jotta voit harjoitella tätä artikkelia lukiessasi.

VBA Jos solu sisältää arvon Then.xlsm

Excel VBA -analyysi: Jos solu sisältää arvon, palauta tuotokset (vaiheittainen analyysi)

Tässä on aineisto, joka sisältää joidenkin oppilaiden arvosanat fysiikassa, kemiassa ja matematiikassa koulussa nimeltä Sunflower Kindergarten.

Tyhjät solut tarkoittavat, että opiskelija ei ollut läsnä, eli hän oli poissa kyseisessä tentissä. Analysoidaan nyt tilannetta, sisältääkö solu arvon vai ei, tämän aineiston avulla.

⧪ Vaihe 1: Solun ilmoittaminen

Ensin on ilmoitettava solu, jonka arvoa haluamme analysoida. Analysoidaan, osallistuiko Jennifer Marlo fysiikan kokeeseen vai ei.

Siksi meidän on tarkistettava, onko solu C12 sisältää arvon tai ei.

Tätä varten meidän on ensin ilmoitettava solu C12 .

Koodirivi tämän toteuttamiseksi on:

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

⧪ Vaihe 2: Tarkista, sisältääkö solu arvon (mukaan lukien tietty arvo).

Seuraavaksi meidän on tarkistettava, sisältääkö solu arvon vai ei. Suoritamme tämän käyttämällä komentoa Jos ehto Koodirivi on:

 If Cell.Value "" Then 

Tämä koodi suoritetaan, jos solu sisältää minkä tahansa arvon. Jos haluat tarkistaa jonkin arvon (esimerkiksi, sisältääkö solu 100 vai ei), käytä kyseistä arvoa, jossa on Yhtä suuri kuin symboli.

 If Cell.Value "" Then 

⧪ Vaihe 3: Tehtävän jakaminen

Sitten sinun on määritettävä tehtävä, joka suoritetaan, jos solu sisältää arvon (tai tietyn arvon).

Haluamme näyttää viestin "Jennifer Marlo esiintyi fysiikan kokeessa." . Joten koodirivi on:

 MsgBox "Jennifer Marlo osallistui fysiikan kokeeseen." 

⧪ Vaihe 4: If-lohkon päättäminen

Lopuksi sinun on ilmoitettava If-lohkon loppu.

 End If 

Joten täydellinen VBA koodi on:

⧭ VBA-koodi:

 Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo esiintyi fysiikan kokeessa." End If End Sub 

⧭ Lähtö:

Suorita tämä koodi napsauttamalla Suorita Sub/UserForm painiketta työkalupalkissa.

Se näyttää viestin "Jennifer Marlo esiintyi fysiikan kokeessa." kuin solu C12 sisältää arvon, joka on 50 .

Esimerkkejä, joissa Jos solu sisältää arvon, niin määritetty tuloste Excel VBA: lla

Olemme oppineet analysoimaan, sisältääkö solu arvon vai ei. VBA Tutkitaan nyt muutamia esimerkkejä, jotta ymmärrys olisi selkeä.

1. Makron kehittäminen arvon suodattamiseksi, jos vastaava solu sisältää minkä tahansa arvon Excel VBA:ssa.

Kehitetään Makro suodattaa pois kussakin kokeessa esiintyneet opiskelijat.

Toisin sanoen meidän on tarkistettava kunkin oppiaineen arvosanat sisältävät solut ja katsottava, sisältävätkö ne arvon vai eivät.

Jos näin on, meidän on selvitettävä vastaavan opiskelijan nimi.

Täydellinen VBA koodi tämän toteuttamiseksi on:

⧭ VBA-koodi:

 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 

⧭ Lähtö:

Valitse tietokokonaisuus (mukaan lukien Otsikot ) ja suorita tämä Makro .

Ensin sinua pyydetään syöttämään sen ensimmäisen solun viite, johon haluat suodattaa tiedot. Olen syöttänyt seuraavaan soluun G3 .

Napsauta sitten OK . saatte kuhunkin kokeeseen osallistuneiden opiskelijoiden nimet (mukaan lukien tutkintotodistukset). Otsikot ) uudessa tietueessa, joka alkaa solusta G3 .

2. Käyttäjän määrittelemän funktion luominen arvon lajittelemiseksi, jos vastaava solu sisältää tietyn arvon Excel VBA:ssa.

Nyt luodaan käyttäjän määrittelemä funktio, joka palauttaa niiden oppilaiden nimet, jotka saivat tietyn arvosanan kussakin oppiaineessa.

Menettely on lähes sama kuin edellä. Meidän on tarkistettava kunkin oppiaineen arvosanat sisältävät solut ja katsottava, ovatko ne yhtä suuria kuin tietty arvo vai eivät.

Jos näin on, palautamme vastaavan opiskelijan nimen.

The VBA koodi on:

⧭ VBA-koodi:

 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 

⧭ Lähtö:

Koodi luo funktion nimeltä Cells_with_Values joka ottaa kaksi argumenttia, a Valikoima ja Arvo .

Etsitään tämän funktion avulla ne oppilaat, jotka saivat 100 pistettä kussakin oppiaineessa.

Valitse työarkistasi solualue ja kirjoita tämä toiminto alueen ensimmäiseen soluun:

=Cells_with_Values(B3:E13,100)

[Täällä B3:E3 on aineistoni (mukaan lukien Otsikot ) ja 100 on minun vastaavuusarvoni. Käytä sinä omaa arvoasi.]

Paina sitten CTRL + SHIFT + ENTER ( Array kaava ). Se palauttaa joukon, joka koostuu niiden oppilaiden nimistä, jotka saivat 100 pistettä kussakin oppiaineessa, mukaan lukien Otsikot .

3. UserForm-lomakkeen kehittäminen arvon poimimiseksi, jos vastaava solu sisältää minkä tahansa arvon (tai tietyn arvon) Excel VBA: ssa.

Lopuksi kehitämme UserForm poimia niiden opiskelijoiden nimet, jotka osallistuivat (tai saivat tietyn pistemäärän) tiettyihin kokeisiin.

⧪ Vaihe 1: Käyttäjälomakkeen avaaminen

Mene osoitteeseen Insert> UserForm vaihtoehto VBA editorin avata uusi UserForm . Uusi UserForm nimeltään UserForm1 avataan.

⧪ Vaihe 2: Työkalujen vetäminen UserFormiin

Lisäksi UserForm , saat Työkalupakki Siirrä kursori Työkalupakki ja vedä 4 tarraa (tarra1, tarra2, tarra3, tarra4). ja 3 ListBoxia (ListBox1, ListBox2, ListBox3) ja Tekstilaatikko (TextBox1) suorakaiteen muotoinen suorakaiteen muotoinen UserForm .

Vedä sitten toinen Etiketti (Label5) ja Tekstilaatikko (TextBox2) vasemmassa alakulmassa olevaan UserForm .

Vedä lopuksi CommandButton (CommandButton1) oikeaan alakulmaan.

Vaihda näytöt Tarrat osoitteeseen Katso sarake , Paluu sarake , Mikä tahansa arvo tai tietty arvo , Arvo, ja Aloitussolu.

Vaihda myös näytön CommandButton1 osoitteeseen OK .

⧪ Vaihe 3: ListBox3:n koodin kirjoittaminen

Kaksoisnapsauta ListBox3 . A Yksityinen aliproseduuri nimeltään ListBox3_Click avautuu. Kirjoita sinne seuraava koodi.

 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 

⧪ Vaihe 4: Koodin kirjoittaminen CommandButton1-painikkeelle

Kaksoisnapsauta sitten CommandButton1 . toinen Yksityinen aliproseduuri nimeltään CommandButton1_Click avautuu. Kirjoita sinne seuraava koodi.

 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 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 "Syötä aloitussoluksi kelvollinen soluviite.", vbExclamation End Sub 

⧪ Vaihe 5: Koodin kirjoittaminen käyttäjälomakkeen suorittamiseksi

Lisää lopuksi uusi Moduuli alkaen VBA-työkalurivi ja lisää sinne seuraava koodi.

 Sub Run_UserForm() UserForm1.Caption = "Arvoja sisältävien solujen suodatus" 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 "Mikä tahansa arvo" UserForm1.ListBox3.AddItem "Tietty arvo" UserForm1.Label4.Visible = False UserForm1.TextBox1.Visible = False Load UserForm1 UserForm1.Show End Sub 

⧪ Vaihe 6: Käyttäjälomakkeen suorittaminen (lopputulos)

Sinun UserForm on nyt valmis käytettäväksi. Valitse tietokokonaisuus laskentataulukosta ( B3:E13 täällä) (mukaan lukien Otsikot ) ja suorita Makro nimeltään Run_UserForm .

The UserForm ladataan laskentataulukkoon. Työkalusta Katso sarake taulukon, olen valinnut Fysiikka ja Matematiikka , koska haluan saada niiden oppilaiden nimet, jotka esiintyivät vuonna Fysiikka ja Matematiikka tentit.

Vuodesta Paluu sarake taulukon, olen valinnut Opiskelijan nimi , koska haluan saada oppilaiden nimet.

Ja alkaen Mikä tahansa arvo tai tietty arvo taulukon, olen valinnut Mikä tahansa arvo .

Lopuksi Aloitussolu laatikko, olen laittanut G3 .

Napsauta sitten OK . Saat niiden oppilaiden nimet, jotka esiintyivät elokuvassa Fysiikka ja Matematiikka tentit alkaen solusta G3 .

Jos olisit valinnut Erityisarvo alkaen Mikä tahansa arvo tai tietty arvo taulukko, olisit saanut toisen Tekstilaatikko syöttääksesi tietyn arvon.

Tässä olen syöttänyt 100 .

Klikkaa OK . Ja saat oppilaat, jotka saivat - 100 osoitteessa Fysiikka ja Kemia .

Muistettavat asiat

Käytimme kaksiulotteista matriisia palauttamaan oppilaiden nimet luokassa Käyttäjän määrittelemä toiminto kuvattu esimerkissä 2 .

Hugh West on erittäin kokenut Excel-kouluttaja ja analyytikko, jolla on yli 10 vuoden kokemus alalta. Hän on koulutukseltaan laskentatoimen ja rahoituksen kandidaatti sekä kauppatieteiden maisteri. Hughilla on intohimo opettamiseen, ja hän on kehittänyt ainutlaatuisen opetusmenetelmän, jota on helppo seurata ja ymmärtää. Hänen asiantuntemuksensa Excelistä on auttanut tuhansia opiskelijoita ja ammattilaisia ​​maailmanlaajuisesti parantamaan taitojaan ja menestymään urallaan. Blogissaan Hugh jakaa tietämyksensä maailman kanssa tarjoamalla ilmaisia ​​Excel-opetusohjelmia ja verkkokoulutusta auttaakseen yksilöitä ja yrityksiä saavuttamaan täyden potentiaalinsa.