Excel - makro konkreetsete väärtustega ridade kustutamiseks

Microsoft Excel on üks mugavamaid vahendeid numbrite esitamiseks. Juhul, kui tegemist on suure hulga ridade või veergudega, on Excelil ka visuaalne põhiraamistik, mida saab kasutada kohandatud makrode salvestamiseks või kirjutamiseks. VBA makrosüsteem võimaldab kasutajatel automatiseerida protsessi minimaalse kasutaja sisendiga. Neid makroid saab kohandada konkreetsete väärtuste või ridade jaoks. Kasutaja saab ka kohandada konkreetsete väärtuste või ridade algus- ja lõpp-vahemikke. Kõik need valikud suurendavad Exceli kasutamist andmetöötlusrakendustena .

  • Probleem
  • Lahendus
  • Pange tähele, et

Probleem

Põhimõtteliselt on mul see leht, mis sisaldab teavet erinevate osakondade kohta ja mida ma tahan teha, on kustutada iga rida, välja arvatud read, mis sisaldavad mõningaid määratud väärtusi (mida ma sooviksin skripti käivitamisel sisestada).

Oletame, et veerus, mis nimetab osakonda (minu lehel nimega "Avd"), tahan, et skript otsib mis tahes lahtrit, mis ei sisalda näiteks numbreid 1, 3, 5, 6 või 21 .. ja nii edasi (mul on umbes 36 erinevat numbrit).

Lahendus

Kõik, mida selleks vaja on, tõstke esile veerus olev teave ja seejärel käivitage järgmine makro. Seal on kast, mis palub teil valida, millist väärtust soovite säilitada. See on saadaval kuni 30 000 rida.

 Sub DeleteRows () Dim strToDelete nagu string Dim rngSrc Nagu vahemik Dim Numbrid kui terviklikud Dim ThisRow kui terviklikud Dim ThatRow kui terviklikud Dim ThisCol kui terviklikud Dim J kui terviklikud Dim DeletedRows kui terviklikud strToDelete = InputBox (väärtus, mida Trigger hoida, Jason ??? ? ", " Kustuta ridu ") Set rngSrc = ActiveSheet.Range (ActiveWindow.Selection.Address) NumRows = rngSrc.Rows.Count ThisRow = rngSrc.Row ThatRow = See Row + NumRows - 1 ThisCol = rngSrc.Kolonn Dim topReger Integer Dim bottomRows As Integer bottomRows = 30000 J = ThisRow to NumRows Etapp 1 Kui lahtrid (J, ThisCol) = strToDelete Seejärel 'read (J) .Valige topRows = J Välju DeletedRows = DeletedRows + 1 End Kui järgmine J J = (topRows + 1) NumRowsile 1. etapp Kui rakud (J, ThisCol) strToDelete Siis "read (J) .Valige bottomRows = J väljumine" DeletedRows = kustutatud read + 1 lõpp kui järgmine J Kui top 4 näitab, siis ActiveSheet.Range (rakud (4, 1), Rakud (topRows - 1, 52)). Valige Selection.delete Shift: = xlUp End Kui ActiveSheet.Range (lahtrid (bottomRows - topRows + 4, 1), rakud (30000, 52)). Valige valiku.delete Shift: = xlUp 'MsgBox' Kustutatud ridade arv: & kustutab lõppu 

Pange tähele, et

Täname Jasonit selle foorumi vihje eest.

Eelmine Artikkel Järgmine Artikkel

Top Näpunäited