Stránka 1 z 1

Jak hromadně odstranit řádky v Excelu?

Napsal: 23 říj 2019 09:44
od atari
Potřebuji odstranit řádky, které ve sloupci B neobsahují 999. Udělal jsem to cyklem viz níže. Jelikož se uprostřed cyklu snižuje hodnota řádků, tak po každém smazání snižuji hodnotu i. A aby se to po posledním řádku nezacyklilo, tak neustále hodnotu "I" porovnávám s posledním řádkem a při shodě násilně cyklus uknčim.

Toto řešení mi připadá neprofesionální a při velkém množství řádků pomalé. Existuje elegantnější a rychlejší způsob jak ty řádky smazat?

Kód: Vybrat vše

Sub odstranit_radky()
PosledniRadek = Cells(Rows.Count, "B").End(xlUp).Row 'poslední rádek

For i = 1 To PosledniRadek
    If Cells(i, 2) = 999 Then
    Else
        Rows(i).Delete 'smazeme rádky kde není 999
        i = i - 1 'snižuji hodnotu i
    End If
    PosledniRadek = Cells(Rows.Count, "B").End(xlUp).Row 'znovu načtu poslední řádek
    If i = PosledniRadek Then Exit For 'pokud je "i" na posledním řádku tak ukončím cyklus
Next i
End Sub

Re: Jak hromadně odstranit řádky v Excelu?

Napsal: 23 říj 2019 09:55
od Zivan
Netusim jestli nejde v Excelu nejak filtrovat radky, ziskat spravne a ty hromadne smazat...ale co projet ty radky od konce? Kdyz jich bude 100, ty zjistis ze 90. radek neobsahuje 999, smazes ho a jdes na radek 89. Nevadi ti, ze se z radku 91 stal radek 90...atd.

Nemusis pak resit jaky je aktualne posledni radek a uvnitr for cyklu meni promennou i, coz si vzdy koleduje o problem.

Re: Jak hromadně odstranit řádky v Excelu?

Napsal: 23 říj 2019 10:06
od atari
OK díky, tohle funguje, a je to čisté řešení.
Pak ještě zbývá problém, že to je při velkém počtu řádků pomalé. Ale to se dá přežít.

Re: Jak hromadně odstranit řádky v Excelu?

Napsal: 23 říj 2019 11:44
od Grimm
V příloze několik možností. Jednu zmínil již Zivan
Otestuj

Re: Jak hromadně odstranit řádky v Excelu?

Napsal: 24 říj 2019 00:15
od guest
a) Řádky se odstraňují odspodu.
b) Jde to udělat hromadně
c) Nasaďte filtr a neřešte kraviny.

Re: Jak hromadně odstranit řádky v Excelu?

Napsal: 24 říj 2019 08:33
od atari
a) to už jsem udělal a funguje
b) "hromadně" - můžete dát nápovědu?
c) filtr nepřichází v úvahu, já ten soubor umistuji na web pro veřejné stažení, takže tam nemůžu nechat něco co nesmí veřejnost vidět

Re: Jak hromadně odstranit řádky v Excelu?

Napsal: 26 říj 2019 10:03
od guest
b)

Kód: Vybrat vše

Sub Devitky()

    Dim rngRefBunka As Range

    'se sloupcem 2...
    With Columns(2)
       
        'referencni bunka
        Set rngRefBunka = .Find(What:="999", LookAt:=xlWhole)
   
        'odstraneni rozdilnych radku
        'viz dialog Prejit na - jinak
        .ColumnDifferences(rngRefBunka).EntireRow.Delete

    End With

End Sub


c) Myslel jsem nasadit filtr a devítky přenést jinam a to zveřejnit.

Pro úplnost (jiná verze úlohy)
https://proexcel.cz/odstraneni-radku-na-zaklade-hodnoty/