Excel - makronaredba za brisanje redaka s određenim vrijednostima

Microsoft Excel je jedan od najlakših alata za igranje s brojevima. U slučajevima kada se radi o velikom broju redaka ili stupaca, Excel ima i vizualni osnovni okvir koji se može koristiti za snimanje ili pisanje prilagođenih makronaredbi . Makronaredbe VBA omogućuju korisnicima automatiziranje procesa uz minimalni korisnički unos. Te se makronaredbe mogu prilagoditi za rad s određenim vrijednostima ili redovima. Korisnik također može prilagoditi početni i završni raspon za određene vrijednosti ili retke. Sve ove mogućnosti povećavaju Excelovu primjenu kao aplikaciju za obradu podataka .

  • Problem
  • Riješenje
  • Zapamtite to

Problem

Uglavnom ono što imam je list pun informacija o različitim odjelima i ono što želim učiniti je izbrisati svaki red IZVAN redaka koji sadrže neke specificirane vrijednosti (koje bih htio unijeti o pokretanju skripte).

Recimo u stupcu koji imenuje odjel (u mojem listu pod nazivom "Avd"), želim da skripta traži bilo koju ćeliju koja ne sadrži, na primjer, brojeve 1, 3, 5, 6 ili 21 .. i tako dalje (imam oko 36 različitih brojeva).

Riješenje

Sve što trebate učiniti je istaknuti informacije u stupcu, a zatim pokrenuti sljedeći makro. Pojavit će se okvir koji će od vas zatražiti da odaberete koju vrijednost želite zadržati. To je dostupno za do 30.000 redaka.

 Sub DeleteRows () Dim strToDelete As String Dim rngSrc As Range Dim NumRows kao Integer Dim ThisRow As Integer Dim ThatRow As Integer Dim ThisCol As Integer Dim J As Integer Dim IzbrisanoRows As Integer strToDelete = InputBox ("Value to Trigger Keep, Jason ??? ? ", " Izbriši redke ") Postavi rngSrc = ActiveSheet.Range (ActiveWindow.Selection.Address) NumRows = rngSrc.Rows.Count ThisRow = rngSrc.Row bottomRows As Integer bottomRows = 30000 Za J = ThisRow Za NumRows Korak 1 Ako su ćelije (J, ThisCol) = strToDelete tada 'redaka (J) .Select topRows = J Izlaz za DeletedRows = Izbrisani redovi + 1 Kraj ako je sljedeći J Za J = (topRows) 1) Za NumRows Korak 1 Ako su ćelije (J, ThisCol) strToDelete tada 'redovi (J) .Select bottomRows = J Izlaz za' DeletedRows = Izbrisani redovi + 1 Kraj ako je sljedeći J Ako topRows 4 Zatim ActiveSheet.Range (ćelije (4, 1), Stanice (topRows - 1, 52)). Odaberite Selection.delete Shift: = xlUp Kraj Ako ActiveSheet.Range (Ćelije (bottomRows - topRows + 4, 1), Ćelije (30000, 52)). Odaberite Selection.delete Shift: = xlUp 'MsgBox "Broj izbrisanih redaka:" & Obrisani redovi Kraj 

Zapamtite to

Hvala Jasonu na ovom savjetu na forumu.

Prethodni Članak Sljedeći Članak

Top Savjeta