Excel - makro za brisanje vrstic z določenimi vrednostmi

Microsoft Excel je eno najbolj priročnih orodij za igranje s številkami. V primerih, ko gre za veliko število vrstic ali stolpcev, ima Excel tudi vizualni osnovni okvir, ki ga je mogoče uporabiti za zapisovanje ali pisanje makrov po meri . Makroji VBA omogočajo uporabnikom avtomatizacijo postopka z minimalnim vnosom uporabnikov. Te makre lahko prilagodite za delo z določenimi vrednostmi ali vrsticami. Uporabnik lahko prilagodi tudi začetni in končni razpon za določene vrednosti ali vrstice. Vse te možnosti povečajo Excelovo uporabo kot aplikacijo za obdelavo podatkov .

  • Težava
  • Rešitev
  • Upoštevajte, da

Težava

V bistvu imam list, poln informacij o različnih oddelkih in kar želim storiti je, da izbrišem vsako vrstico RAZEN vrstic, ki vsebujejo določene vrednosti (ki jih želim vnesti ob zagonu skripta).

Recimo v stolpcu, ki imenuje oddelek (v mojem listu z imenom "Avd"), želim, da scenarij išče vsako celico, ki ne vsebuje, na primer, številk 1, 3, 5, 6 ali 21 .. in tako naprej (imam okoli 36 različnih številk).

Rešitev

Vse kar morate storiti je, da označite informacije v stolpcu in nato zaženete naslednji makro. Na voljo je okno, ki vas bo pozvalo, da izberete vrednost, ki jo želite obdržati. To je na voljo za do 30.000 vrstic.

 Sub DeleteRows () Dim strToDelete As String Dim rngSrc As Razpon Dim NumRows Kot Integer Dim ThisRow Kot Integer Dim ThatRow Kot Integer Dim ThisCol As Integer Dim J Kot Integer Dim IzbrisanoRows As Integer strToDelete = InputBox ("Vrednost za sprožitev Keep, Jason ??? ? ", " Izbriši vrstice ") Set rngSrc = ActiveSheet.Range (ActiveWindow.Selection.Address) NumRows = rngSrc.Rows.Count ThisRow = rngSrc.Row ThatRow = ThisRow + NumRows - 1 ThisCol = rngSrc.Column Dim topRows As Integer Dim bottomRows As Integer bottomRows = 30000 Za J = ThisRow Za NumRows Korak 1 Če celice (J, ThisCol) = strToDelete Nato 'Vrstice (J) .Select topRows = J Izhod za DeletedRows = IzbrisaneRove + 1 Konec Če Naslednji J Za J = (topRows) + 1) V NumRows Korak 1 Če nato celice (J, ThisCol) strToDelete "Vrstice (J) .Select bottomRows = J Izhod za" DeletedRows = IzbrisaneRove + 1 Konec Če Naslednja J Če topRows 4 Potem ActiveSheet.Range (Celice (4, 1), celice (topRows - 1, 52)). Izberite Selection.delete Shift: = xlUp End Če je ActiveSheet.Range (Celice (bottomRows - topRows + 4, 1), Cells (30000, 52)). Izberite Selection.delete Shift: = xlUp "MsgBox" Število izbrisanih vrstic: "& IzbrisanoRow End Sub 

Upoštevajte, da

Hvala Jasonu za ta nasvet na forumu.

Prejšnji Članek Naslednji Članek

Top Nasveti