Dodajanje in brisanje vrstic je del vsakodnevnih običajnih opravil pri delu z Excelom.
Čeprav lahko to preprosto storite na samem delovnem listu, boste včasih morda želeli uporabiti pot VBA za brisanje vrstic v Excelu. To so lahko brisanje določene vrstice, več vrstic v izboru, brisanje nadomestnih vrstic ali vrst z določeno vrednostjo.
V tej vadnici vam bom pokazal, kako izbrišete vrstice v Excelu z uporabo VBA (več scenarijev).
Pa začnimo!
Z VBA izbrišite celotno vrstico
Če želite izbrisati celotno vrstico v Excelu z uporabo VBA, morate uporabiti metodo EntireRow.Delete.
Če želite na primer izbrisati celotno prvo vrstico na delovnem listu, lahko uporabite spodnjo kodo:
Sub DeleteEntireRow () Vrstice (1) .EntireRow.Delete End Sub
Zgornja koda najprej določa vrstico, ki jo je treba izbrisati (kar se naredi tako, da se v oklepaju navede številka), nato pa se z metodo EntireRow.Delete izbriše.
Več vrstic lahko tudi izbrišete tako, da jih v kodi navedete.
Na primer, spodnja koda bo izbrisala vrstice 1, 5 in 9 na delovnem listu:
Sub DeleteEntireRow () Vrstice (9) .EntireRow.Delete Rows (5) .EntireRow.Delete Rows (1) .EntireRow.Delete End Sub
Zgornja koda uporablja isto logiko, kjer podaja številke vrstic in Excel bo te vrstice izbrisal eno za drugo.
POMEMBNO: Ko brišete vrstice z nečim podobnim zgornji kodi, ne pozabite izbrisati od spodaj in nato iti navzgor. Na primer, če začnete na vrhu in najprej izbrišete 1. vrstico, bi se vse vrstice pod njo premaknile za eno vrstico navzgor, oštevilčenje pa bi bilo izklopljeno (ker bi 5. vrstica postala 4. in tako naprej)Izbrišite vse vrstice v izboru
Če želite izbrisati vse vrstice v izbranem obsegu celic, lahko uporabite spodnjo kodo makra VBA:
Sub IzbrišiEntireRow () Izbor.EntireRow.Delete End Sub
Zgornja koda velja za metodo EntireRow.Delete za celoten izbor.
Izbriši nadomestne vrstice (ali Izbriši vsako tretjo/četrto/N -to vrstico)
Včasih lahko pride do izpisa podatkov, kjer je vsaka druga vrstica (ali tretja, četrta ali N -ta vrstica) neuporabna in jo je treba izbrisati.
Včasih sem delal s finančnimi podatki, kjer je bila vsaka druga vrstica prazna in jo je bilo treba izbrisati.
To je vrsta scenarija, kjer VBA resnično sije.
Spodaj je koda VBA, ki bo šla skozi vse vrstice v izboru in izbrisala vsako drugo vrstico:
Sub DeleteAlternateRows () RCount = Selection.Rows.Count For i = RCount do 1 Step -2 Selection.Rows (i) .EntireRow.Delete Next i End Sub
Naj razložim, kako deluje ta koda VBA.
Najprej sem uporabil spremenljivko RCount da dobite skupno število vrstic v izboru.
Nato sem uporabil zanko For Next, da sem to izvedel tolikokrat, kolikor je vrstic. Na primer, če je 12 vrstic, bo ta zanka potekala od 12 do 1 (tj. 12 -krat). Pomembno je, da to izvedete od zadnje vrstice v izboru do prve, saj ne želimo, da se številke vrstic spremenijo, ko se vrstica izbriše.
Uporablja se tudi korak -2, saj moramo izbrisati vsako drugo vrstico (od spodaj navzgor). Če želite izbrisati vsako tretjo vrstico, lahko uporabite -3.
V zanki VBA sem za brisanje vsake nadomestne vrstice uporabil metodo Selection.Rows (i) .EntireRow.Delete.
Izbrišite prazne vrstice z VBA
Za brisanje vseh praznih vrstic lahko uporabite tudi metodo EntireRow.Delete.
Spodaj je koda VBA, ki bo izbrala prazne celice v izbranem naboru podatkov in izbrisala celotno vrstico.
Sub DeleteBlankRows () Selection.SpecialCells (xlCellTypeBlanks) .EntireRow.Delete End Sub
Zgornja koda uporablja lastnost SpecialCells za izbiro in brisanje vseh praznih celic. To je ista metoda, ki nam omogoča tudi uporabo pogovornega okna »Pojdi na posebno« za izbiro vseh praznih celic.
Ko so te prazne celice identificirane s pomočjo SpecialCell, se te izbrišejo z metodo EntireRow.Delete.
Opomba: Ta metoda izbere prazne celice in ne preveri, ali je celotna vrstica prazna ali ne. Če je torej katera koli celica prazna v vrsti, bo to še vedno izbrisalo celotno vrstico.Izbrišite vrstice z določeno besedo/vrednostjo
Uporabite lahko tudi preprosto kodo VBA, da prečkate vsako celico v izbranem obsegu in izbrišete vse vrstice, kjer celica vsebuje določeno besedilo ali vrednost.
Recimo, da imate nabor podatkov in želim izbrisati vse celice z besedilom Tiskalnik v stolpcu 2 izbora.
Spodaj je koda, ki bo to naredila:
Sub DeleteRowswithSpecificValue () Za i = Selection.Rows.Count To 1 Step -1 If Cells (i, 2) .Value = "Printer" Potem celice (i, 2) .EntireRow.Delete End If Next i End Sub
Zgornja koda najprej šteje skupno število vrstic v izboru. Tako boste zagotovili, da bo zanka izvedena le tolikokrat. Nato uporabi zanko »Za naslednjo«, da preide skozi vse celice v stolpcu 2.
Stavek IF THEN ELSE se nato uporabi za preverjanje vrednosti v vsaki celici v stolpcu 2. In če se vrednost/besedilo ujema z navedenim besedilom (ki je v tem primeru "tiskalnik").
V tem primeru sem preveril, ali se besedilo ujema z določenim nizom ali ne. To lahko storite tudi z vrednostmi. Izbrišete lahko na primer vse vrstice, pri katerih je prodajna vrednost manjša od 1000 ali večja od 1000.
Opomba: Pomembno je omeniti, da zanka teče od Izbor.Roki.Štetje do 1 da se prepričate, da ko je vrstica izbrisana, to ne vpliva na vrstice nad njo.
Kako uporabljati to kodo VBA
Zdaj pa naj vam pokažem, kako z vsemi kodami, navedenimi v tej vadnici, izbrisati celotno vrstico.
Te kode morate kopirati in prilepiti v modul v urejevalniku Excel VB. Ko kopirate te kode, lahko nato zaženete kode makrov.
Spodaj so navedeni koraki za kopiranje in lepljenje teh kod VBA v modul:
- Držite tipko ALT in pritisnite tipko F11 (ali Funkcija + Možnost + F11 v Macu). S tem se odpre urejevalnik VB
- V urejevalniku VB boste imeli raziskovalca projektov na levi. Če ga ne vidite, pojdite na možnost Pogled in kliknite na Project Explorer.
- Z desno miškino tipko kliknite kateri koli predmet v Raziskovalcu (za delovni zvezek, v katerem želite zagnati kodo).
- Pojdite na Vstavi in kliknite na Modul. S tem boste v delovni zvezek vstavili nov modul
- Kopirajte in prilepite zgornje kode v modul.
Če želite zagnati te kode, lahko postavite kazalec kamor koli v kodi (ki jo želite zagnati) in pritisnete tipko F5 (ali kliknite na zeleni trikotnik v orodni vrstici VBA).
Napisal sem tudi podrobno vadnico o različnih načinih izvajanja makro kod VBA v Excelu.
V primeru, da morate katero od teh kod pogosto uporabljati, lahko razmislite tudi o tem, da jih dodate v delovni zvezek Personal Macro in nato v QAT. Tako bo koda z enim klikom na voljo v katerem koli delovnem zvezku.Torej je bilo to nekaj kod VBA, s katerimi lahko izbrišete cele vrstice v Excelu (v različnih scenarijih). Ista logika se lahko uporabi tudi v primeru, da želite namesto vrstic izbrisati stolpce (z ustrezno prilagoditvijo v primerih kod).
Upam, da vam je bila ta vadnica koristna!