Excel - Ett makro för att radera rader med specifika värden

Microsoft Excel är ett av de bästa verktygen att spela runt med siffror. I fall där ett stort antal rader eller kolumner är inblandade har Excel också den visuella grundramen som kan användas för att spela in eller skriva egna makron . VBA- makron tillåter användare att automatisera processen genom att ha en minsta användarinmatning. Dessa makron kan anpassas för att arbeta på specifika värden eller rader. Användaren kan också anpassa vad som ska vara start- och slutintervall för specifika värden eller rader. Alla dessa alternativ ökar Excel-användningen som ett datahanteringsprogram .

  • Problem
  • Lösning
  • Anteckna det

Problem

I grund och botten vad jag har är ett ark fyllt med information om olika avdelningar och vad jag vill göra är att radera varje rad, med undantag för raderna som innehåller vissa angivna värden (som jag skulle vilja ange vid körning av manuset).

Låt oss säga i kolumnen som heter avdelningen (i mitt ark med namnet "Avd"), jag vill att manuset ska leta efter en cell som inte innehåller, till exempel siffrorna 1, 3, 5, 6 eller 21 .. . och så vidare (jag har ungefär 36 olika siffror).

Lösning

Allt du behöver göra är att markera informationen i kolumnen och sedan köra följande makro. Det kommer att finnas en ruta som kommer att uppmana dig att välja vilket värde du vill behålla. Detta är tillgängligt för upp till 30 000 rader.

 Sub DeleteRows () Dim strToDelete Som String Dim RngSrc Som Område Dim NumRows Som Integer Dim ThisRow Som Integer Dim ThatRow Som Integer Dim ThisCol Som Integer Dim J Som Integer Dim Dölj Rows Som Integer strToDelete = InputBox ("Value to Trigger Keep, Jason ??? ? ", " Radera rader ") Ställ in rngSrc = ActiveSheet.Range (ActiveWindow.Selection.Address) NumRows = rngSrc.Rows.Count ThisRow = rngSrc.Row ThatRow = ThisRow + NumRows - 1 ThisCol = rngSrc.Column Dim topRows som integer Dim bottomRows As Integer bottomRows = 30000 För J = ThisRow To NumRows Steg 1 Om celler (J, ThisCol) = strToDelete Då 'Rader (J) .Välj topRows = J Avsluta för DeletedRows = DeletedRows + 1 Enda om nästa J för J = (topRows + 1) Till NumRows Steg 1 Om celler (J, ThisCol) strToDelete Då Rader (J) .Välj bottomRows = J Avsluta för 'DeletedRows = DeletedRows + 1 Avsluta om nästa J Om topRows 4 Then ActiveSheet.Range (Celler (4, 1), celler (topRows - 1, 52)). Välj Selection.delete Shift: = xlUp Avsluta Om ActiveSheet.Range (Celler (bottomRows - topRows + 4, 1), Celler (30000, 52)). Välj Selection.delete Shift: = xlUp 'MsgBox' Antal raderade rader: "& DeletedRows End Sub 

Anteckna det

Tack till Jason för detta tips på forumet.

Tidigare Artikel Nästa Artikel

Bästa Tipsen