Jak hromadně odstranit řádky v Excelu?

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Uživatelský avatar
atari
Level 6
Level 6
Příspěvky: 3202
Registrován: říjen 08
Pohlaví: Muž
Stav:
Offline

Jak hromadně odstranit řádky v Excelu?

Příspěvekod atari » 23 říj 2019 09:44

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
Přílohy
test.xlsm
(15.88 KiB) Staženo 49 x

Reklama
Zivan
Level 5
Level 5
Příspěvky: 2450
Registrován: leden 10
Pohlaví: Nespecifikováno
Stav:
Online

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

Příspěvekod Zivan » 23 říj 2019 09:55

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.
HP Elitebook 845 G8 (Ryzen 5650U, 32GB RAM, WD SN570 1TB, 14" fullHD IPS) + HP USB-C G5 Essential + 29" LG 29UM65 + 22" Eizo S2202W

Uživatelský avatar
atari
Level 6
Level 6
Příspěvky: 3202
Registrován: říjen 08
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod atari » 23 říj 2019 10:06

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.

Uživatelský avatar
Grimm
Level 2
Level 2
Příspěvky: 162
Registrován: září 17
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod Grimm » 23 říj 2019 11:44

V příloze několik možností. Jednu zmínil již Zivan
Otestuj
Přílohy
test.xlsm
(19.42 KiB) Staženo 77 x

guest
Pohlaví: Nespecifikováno

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

Příspěvekod guest » 24 říj 2019 00:15

a) Řádky se odstraňují odspodu.
b) Jde to udělat hromadně
c) Nasaďte filtr a neřešte kraviny.

Uživatelský avatar
atari
Level 6
Level 6
Příspěvky: 3202
Registrován: říjen 08
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod atari » 24 říj 2019 08:33

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

guest
Pohlaví: Nespecifikováno

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

Příspěvekod guest » 26 říj 2019 10:03

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/


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti