VBA loendur | Kuidas Exceli VBA-s loendurit luua? (koos näidetega)

Exceli VBA loendur

MS Excelis on funktsioon, mis loendab väärtusi, olgu see string, arv. Loendamist saab teha mõne kriteeriumi alusel. Funktsioonide hulka kuuluvad Excelis COUNT, COUNTA, COUNTBLANK, COUNTIF ja COUNTIFS. Need funktsioonid ei saa siiski teha mõnda ülesannet, näiteks lahtrite loendamine nende värvi põhjal, ainult paksude väärtuste loendamine jne. Seetõttu loome VBA-s loenduri, et saaksime seda tüüpi ülesannete jaoks Excelis arvestada.

Loogem mõni loendur Exceli VBA-s.

Näited Exceli VBA loendurist

Selle VBA Counter Exceli malli saate alla laadida siit - VBA Counter Exceli mall

Allpool on toodud näited VBA loendurist.

Näide 1

Oletame, et meil on 32 rea kohta ülaltoodud andmeid. Loome VBA loenduri, mis loeb väärtused, mis on suuremad kui 50, ja veel ühe loenduri, et loendada väärtusi, mis on väiksemad kui 50. Loome VBA koodi sel viisil, et kasutajal oleks andmeid piiramatu rida excelis.

Samamoodi toimige järgmiselt.

Veenduge, et  vahekaart Arendaja Excel oleks nähtav. Vahekaardi nähtavaks tegemiseks (kui seda pole), toimige järgmiselt.

Klõpsake lindil vahekaarti "Fail" ja valige loendist "Option" .

Valige loendist „ Kohanda linti” , märkige ruut „Arendaja” ja klõpsake nuppu OK .

Nüüd on vahekaart Arendaja nähtav.

Sisestage käsk nuppu kasutades "Insert" käsku saadaval "Kontroll" rühm on "Arendaja" sakk .

ALT- klahvi vajutamise ajal looge hiirega käsunupp. Kui jätkame ALT-klahvi vajutamist, lähevad käsunupu servad automaatselt lahtrite piiriga.

Kontekstimenüü avamiseks paremklõpsake käsunupul (veenduge, et „Kujundusrežiim” oleks aktiveeritud, vastasel juhul ei saa me kontekstimenüüd avada).

Valige menüüst 'Atribuudid' .

Muutke käsunupu atribuute, nt Nimi, pealkiri ja font jne.

Paremklõpsake uuesti ja valige kontekstimenüüst 'Kuva kood' .

Visual Basic Editor on nüüd avatud ja vaikimisi on käsunupu jaoks juba loodud alamprogramm.

Kirjutame koodi kohe. Deklareerime 3 muutujat. Üks silmuse otstarbeks, üks loendamiseks ja teine ​​viimase rea väärtuse salvestamiseks.

Koodi abil valime lahtri A1 ja seejärel lahtri praeguse piirkonna ning jõuame siis viimase täidetud reani, et saada viimane täidetud rea number.

Käivitame VBA-lingi „for” , et kontrollida A2-lahtrisse veerus A viimati täidetud lahtrisse kirjutatud väärtusi. Suurendame muutuja 'loendur' väärtust 1 võrra, kui väärtus on suurem kui 50, ja muudame lahtri fondi värvi 'siniseks' ning kui väärtus on väiksem kui 50, oleks lahtri fondi värv "Punane" .

Pärast kontrollimist ja loendamist peame väärtused kuvama. Samamoodi kasutame 'VBA MsgBox'.

Kood:

 Private Sub CountingCellsbyValue_Click () Dim i, counter As Integer Dim lastrow As Long lastrow = Range ("A1"). CurrentRegion.End (xlDown). Rida jaoks i = 2 Kui rakud täidavad (i, 1). Väärtus> 50 Siis loendur = loendur + 1 lahtrit (i, 1) .Font.ColorIndex = 5 muud lahtrit (i, 1) .Font.ColorIndex = 3 Lõpeta kui järgmine i MsgBox "Seal on & & loenduri &" väärtused, mis on suuremad kui 50 " & _ vbCrLf & "On" & lastrow - counter & "väärtusi, mis on väiksemad kui 50" End Sub 

Deaktiveerige „Kujundusrežiim” ja klõpsake nuppu „Käsu” . Tulemus oleks järgmine.

Näide 2

Oletame, et tahame Exceli VBA abil luua ajaloenduri järgmiselt:

Kui klõpsame nuppu 'Start' , siis taimer käivitub ja kui klõpsame nuppu 'Stop' , siis taimer peatub.

Samamoodi toimige järgmiselt.

Looge Exceli lehel selline vorming.

Muutke lahtri A2 vormingut 'hh: mm: ss' .

Merge rakkude C3 G7 abil Merge ja Center Excel  käsk "Alignment" rühm on "Kodu" sakk .

Andke lahtrile A2 viide lihtsalt ühendatud lahtrile ja tehke seejärel vormindamine, näiteks tehke fondi stiiliks „Baskerville” , fondi suuruseks 60 jne.

Loo kaks Käsunuppude "Start" ja "Stopp" , kasutades "Insert" käsku saadaval "Kontroll" rühm on "Arendaja" sakk .

Kasutades "Omadused" käsk saadaval "Kontroll" rühm on "Arendaja" tab , omaduste muutmiseks.

Valige ükshaaval käsunupud ja valige käsk „Kuva kood vahekaardi „Arendaja” rühmas „Juhtnupud”, et kood kirjutada järgmiselt.

Valige rippmenüüst sobiv käsunupp.

Sisestage moodul 'ThisWorkbooki' , klõpsates hiire parema nupuga 'Thisworkbook', seejärel valige 'Insert' ja seejärel 'Module' .

Kirjuta moodulisse järgmine kood.

Kood:

 Sub start_time () Application.OnTime Now + TimeValue ("00:00:01"), "next_moment" End Sub Sub Sub end_time () Application.OnTime Now + TimeValue ("00:00:01"), "next_moment",, False End Sub Sub next_moment () Kui töölehed ("Ajaloendur"). Vahemik ("A2"). Väärtus = 0, siis väljuge alamtöölehtedelt ("Ajaloendur"). Vahemik ("A2"). Väärtus = töölehed ("Aeg Loendur "). Vahemik (" A2 "). Väärtus - TimeValue (" 00:00:01 ") alguse_aeg Lõpp alam 

Oleme kasutanud " ONTIME " meetod Application objekti, mida kasutatakse käivitada menetlust kindlal kellaajal. Protseduur, mille plaanime käivitada, on järgmine_moment .

Salvestage kood. Kirjutage aeg lahtrisse A2 ja klõpsake ajaloenduri käivitamiseks nuppu "Start" .

Näide # 3

Oletame, et meil on nimekiri õpilastest koos nende poolt hinnatud hindetega. Tahame kokku lugeda õpilaste arvu, kes läbisid ja kes ebaõnnestusid.

Samamoodi kirjutame VBA koodi.

Sammud oleksid:

Avage Visual Basicu redaktor, vajutades otseteed rakenduses Excel Alt + F11 ja topeltklõpsake nupul 'Leht3 (õpilaste arvu loendamine)', et lisada alamprogramm, mis põhineb Sheet3 sündmusel.

Valige rippmenüüst „Tööleht“ .

Kui valime loendist „Tööleht“ , näeme, et kõrvalolevas rippmenüüs on mitmesuguseid sündmusi. Peame loendist valima „SelectionChange” .

Deklareerime VBA muutuja „lastrow” viimase rea numbri salvestamiseks, kuna üliõpilaste loend võib suureneda, „pass ” edukate õpilaste arvu salvestamiseks ja „ebaõnnestunud” paljude ebaõnnestunud õpilaste salvestamiseks.

Viimase rea numbri väärtuse salvestame 'lastrow'.

Loome tingimuse alusel loendamiseks silmuse 'for' .

Oleme seadnud tingimuse, kui kogu märgid on suurem kui 99, siis lisage väärtus 1 kuni "pass" muutuja ja lisage 1 väärtust "ei" muutuja kui tingimusel ebaõnnestub.

Viimane lause muudab pealkirja „Kokkuvõte” paksuks.

Lehe väärtuste printimiseks oleks kood järgmine:

Kood:

 Privaatne alamleht_SelectionChange (ByVal Siht vahemikuna) Hämmerdage nii kaua, kui pikk dimensioon läbiks, kui täisarv Dim ebaõnnestub, kui täisarv lastrow = Vahemik ("A1"). CurrentRegion.End (xlDown). Rea jaoks i = 2 Kui lahtrid täidetakse (i, 5 )> 99. Siis pass = pass + 1 Veel ebaõnnestus = ebaõnnestus + 1 lõpp, kui lahtrid (1, 7). Font.Bold = True Next i Range ("G1"). Väärtus = "Summary" vahemik ("G2"). Väärtus = "Möödunud õpilaste arv on" & läbida vahemik ("G3"). Väärtus = "Ebaõnnestunud õpilaste arv on" & nurjunud Lõpp alam 

Nüüd, kui valikus on muutusi, arvutatakse väärtused uuesti järgmiselt:

Asjad, mida meeles pidada

  1. Salvestage fail pärast koodi kirjutamist VBA-s .xlsm exceli laiendiga, vastasel juhul ei tööta makro.
  2. Kasutage silmust „For”, kui on juba otsustatud, et mitu korda töötab VBA-silmus olev kood.

$config[zx-auto] not found$config[zx-overlay] not found