Šī apmācība parādīs, kā dzēst vai ievietot rindas, pamatojoties uz šūnu vērtībām.
Dzēst rindu, pamatojoties uz šūnas vērtību
Tas pārvietosies pa diapazonu un izdzēsīs rindas, ja A slejā ir rakstīts “dzēst”.
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Deklarēt mainīgosDim LastRow cik ilgi, FirstRow cik ilgiAptumšot rindu tik ilgiAr ActiveSheet“Definējiet pirmo un pēdējo rinduPirmā rinda = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row“Apkārt rindas (no apakšas uz augšu)Rindai = pēdējā rinda līdz pirmajai rindai -1. darbībaJa .Range ("A" & Rinda) .Value = "dzēst" Tad.Range ("A" un rinda) .Visa rinda.DeleteBeigas JaNākamā rindaBeigt arBeigu apakš |
Mums ir jāsāk cilpa ar apakšējo rindu, jo, izdzēšot rindu, dati tiks pārvietoti, rindas izlaižot, ja cilpa tiek veikta no augšas uz leju.
Ņemiet vērā arī to, ka tā vietā, lai manuāli ievadītu pēdējo rindu, mēs aprēķinām pēdējo izmantoto rindu.
Dzēst rindu - pamatojoties uz filtru
Iepriekšējā piemērā mēs atkārtojām rindas, dzēšot katru rindu, kas atbilst kritērijiem. Alternatīvi, mēs varam izmantot Excel automātisko filtru, lai filtrētu rindas, pamatojoties uz dažiem kritērijiem, un pēc tam izdzēstu redzamās rindas:
12345678910111213141516171819202122232425 | ApakšfiltrsAndDeleteRows ()'Deklarēt ws mainīgoDim ws kā darblapaIestatiet ws = ActiveSheet'Atiestatīt esošos filtrusPar kļūdu Atsākt nākamows.ShowAllDataKļūda GoTo 0'Lietot filtruws.Range ("a1: d100"). Automātiskā filtra lauks: = 1, Kritēriji1: = "dzēst""Dzēst rindasApplication.DisplayAlerts = Nepareiziws.Range ("a1: d100"). SpecialCells (xlCellTypeVisible) .DeleteApplication.DisplayAlerts = Patiess'Notīrīt filtruPar kļūdu Atsākt nākamows.ShowAllDataKļūda GoTo 0Beigu apakš |
Dzēst rindu, pamatojoties uz šūnu kritērijiem
Tiks pārvietots diapazons, dzēšot rindas, ja A slejas šūna atbilst noteiktiem kritērijiem (<0):
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Deklarēt mainīgosDim LastRow cik ilgi, FirstRow cik ilgiAptumšot rindu tik ilgiAr ActiveSheet“Definējiet pirmo un pēdējo rinduPirmā rinda = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row“Apkārt rindas (no apakšas uz augšu)Rindai = pēdējā rinda līdz pirmajai rindai -1. darbībaJa .Range ("A" & Rinda) .Vērtība <0 Tad.Range ("A" un rinda) .Visa rinda.DeleteBeigas JaNākamā rindaBeigt arBeigu apakš |
VBA programmēšana | Kodu ģenerators strādā jūsu labā!
Dzēst rindu, ja šūna ir tukša
Tas pārvietosies pa diapazonu, dzēšot rindu, ja A slejas šūna ir tukša:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Deklarēt mainīgosDim LastRow cik ilgi, FirstRow cik ilgiAptumšot rindu tik ilgiAr ActiveSheet“Definējiet pirmo un pēdējo rinduPirmā rinda = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row“Apkārt rindas (no apakšas uz augšu)Rindai = pēdējā rinda līdz pirmajai rindai -1. darbībaJa .Range ("A" & Rinda) .Value = "" Tad.Range ("A" un rinda) .Visa rinda.DeleteBeigas JaNākamā rindaBeigt arBeigu apakš |
Dzēst tukšo rindu
Alternatīvi, ja vēlaties dzēst rindu, ja visa rinda ir tukša (noklikšķiniet uz saites, lai uzzinātu nedaudz atšķirīgu metodi), varat izmantot šo kodu:
1234567891011121314151617181920 | Sub DeleteBlankRows ()'Deklarēt mainīgosDim LastRow cik ilgi, FirstRow cik ilgiAptumšot rindu tik ilgiAr ActiveSheet“Definējiet pirmo un pēdējo rinduPirmā rinda = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row“Apkārt rindas (no apakšas uz augšu)Rindai = pēdējā rinda līdz pirmajai rindai -1. darbībaJa WorksheetFunction.CountA (.Rows (Row)) = 0 Tad.Rindas (Rinda) .Visa rinda.DeleteBeigas JaNākamā rindaBeigt arBeigu apakš |
Dzēst rindu, ja šūna satur vērtību
Tādējādi tiks pārvietots diapazons, dzēšot rindu, ja A slejas šūna nav tukša:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Deklarēt mainīgosDim LastRow cik ilgi, FirstRow cik ilgiAptumšot rindu tik ilgiAr ActiveSheet“Definējiet pirmo un pēdējo rinduPirmā rinda = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row“Apkārt rindas (no apakšas uz augšu)Rindai = pēdējā rinda līdz pirmajai rindai -1. darbībaJa .Range ("A" & Rinda) .Vērtība "" Tad.Range ("A" un rinda) .Visa rinda.DeleteBeigas JaNākamā rindaBeigt arBeigu apakš |
Vai esat noguris no VBA koda piemēru meklēšanas? Izmēģiniet AutoMacro!
Ievietot rindu, pamatojoties uz šūnas vērtību
Tas pārvietosies pa diapazonu, ievietojot rindas, ja konkrēta šīs rindas šūna saka “ievietot”:
1234567891011121314151617181920 | Sub InsertRowsBasedonCellValue ()'Deklarēt mainīgosDim LastRow cik ilgi, FirstRow cik ilgiAptumšot rindu tik ilgiAr ActiveSheet“Definējiet pirmo un pēdējo rinduPirmā rinda = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row“Apkārt rindas (no apakšas uz augšu)Rindai = pēdējā rinda līdz pirmajai rindai -1. darbībaJa .Range ("A" & Rinda) .Value = "insert" Tad.Range ("A" un rinda) .EntireRow.InsertBeigas JaNākamā rindaBeigt arBeigu apakš |