Excel - Makro na odstránenie riadkov so špecifickými hodnotami

Program Microsoft Excel je jedným z najpoužívanejších nástrojov na hranie s číslami. V prípadoch, keď sa jedná o obrovské množstvo riadkov alebo stĺpcov, Excel má tiež vizuálny základný rámec, ktorý možno použiť na záznam alebo zápis vlastných makier . Makrá VBA umožňujú používateľom automatizovať proces tým, že majú minimálny vstup používateľa. Tieto makrá možno prispôsobiť tak, aby fungovali na konkrétnych hodnotách alebo riadkoch. Užívateľ môže tiež prispôsobiť, aké by mali byť počiatočné a koncové rozsahy pre konkrétne hodnoty alebo riadky. Všetky tieto možnosti zvyšujú používanie programu Excel ako aplikácie na spracovanie údajov .

  • Problém
  • Riešenie
  • Poznač si to

Problém

V podstate to, čo mám, je list plný informácií o rôznych oddeleniach a to, čo chcem urobiť, je vymazať každý riadok EXCEPT riadkov, ktoré obsahujú niektoré špecifikované hodnoty (ktoré by som chcel zadať pri spustení skriptu).

Povedzme, že v stĺpci, ktorý volá oddelenie (v mojom hárku s názvom "Avd"), rád by som, aby skript hľadať akúkoľvek bunku, ktorá neobsahuje napríklad čísla 1, 3, 5, 6 alebo 21 .. a tak ďalej (mám asi 36 rôznych čísel).

Riešenie

Jediné, čo musíte urobiť, je zvýrazniť informácie v stĺpci a potom spustiť nasledujúce makro. Zobrazí sa rámček, ktorý vás vyzve, aby ste vybrali hodnotu, ktorú chcete zachovať. Je k dispozícii až pre 30 000 riadkov.

 Sub DeleteRows () Dim strToDelete As String Dim rngSrc Ako rozsah Dim NumRows ako celé číslo Dim ThisRow ako celé číslo Dim ThatRow ako celé číslo Dim ThisCol ako celé číslo Dim J ako celé číslo Dim DeletedRows ako Integer strToDelete = InputBox ("Hodnota na Trigger Keep, Jason ??? ? ", " Vymazať riadky ") Nastaviť rngSrc = ActiveSheet.Range (ActiveWindow.Selection.Address) NumRows = rngSrc.Rows.Count ThisRow = rngSrc.Row ThatRow = ThisRow + NumRows - 1 ThisCol = rngSrc.Column Dim topRows Integer Dim bottomRows As Integer bottomRows = 30000 Pre J = ThisRow To NumRows Krok 1 Ak sú bunky (J, ThisCol) = strToDelete potom 'riadky (J) .Vyberte topRows = J Ukončiť pre DeletedRows = DeletedRows + 1 End If Next J Pre J = (topRows + 1) Do NumRows Krok 1 Ak bunky (J, ThisCol) strToDelete potom 'riadky (J) .Vyberte bottomRows = J Koniec pre' DeletedRows = DeletedRows + 1 End If Next J Ak topRows 4 Potom ActiveSheet.Range (bunky (4, 1), Bunky (topRows - 1, 52)). Vyberte Select.delete Shift: = xlUp End If ActiveSheet.Range (Bunky (bottomRows - topRows + 4, 1), Bunky (30000, 52)). Vyberte položku Select.delete Shift: = xlUp 'MsgBox "Počet odstránených riadkov:" & DeletedRows End Sub 

Poznač si to

Ďakujeme Jasonovi za tento tip na fóre.

Predchádzajúci Článok Nasledujúci Článok

Najlepšie Tipy