Witold Sobków

Witold Sobków Problem Analyst

Temat: [VBA] - usuwanie ukrtych wierszy

Witam, znalazłem w sieci taką oto pętlę na usuwanie niewidocznych wierszy (po odfiltrowaniu).

 For lp = 1 To 65536 'loop through all rows
If Rows(lp).EntireRow.Hidden = True Then Rows(lp).EntireRow.Delete Else
Next


Pętla działa, ale nie do końca. Usuwa tylko część wierszy przez co jestem zmuszony powtarzać ją w kodzie ponieważ nie znam innego rozwiązania :)

Tak więc po 10 razie (co zabiera duuuuużooo czasu) otrzymuję efekt pożądany.

Czy da się ją jakoś skutecznie zmodyfikować lub usunąć niewidoczne wiersze w inny spsób?

Dziękuję z góry za odpowiedź.
Bartłomiej Dąbrowski

Bartłomiej Dąbrowski
analiza/przetwarzani
e danych

Temat: [VBA] - usuwanie ukrtych wierszy

jak usuwamy, to pętelkujemy od tyłu:
For lp = 65536 To 1 Step -1
Witold Sobków

Witold Sobków Problem Analyst

Temat: [VBA] - usuwanie ukrtych wierszy

Wciąż trochę to trwa. Wydaje się, że lepszym rozwiązaniem byłoby przeklejenie odfiltorwanych danych do nowego arkusza, usunięcie pozostałych i ponowne wklejenie w to samo miejsce :)

Temat: [VBA] - usuwanie ukrtych wierszy

Możesz powiedzieć coś więcej po co ci to? Jednorazowy strzał czy coś co powinno być tworzone dynamicznie?
Witold Sobków

Witold Sobków Problem Analyst

Temat: [VBA] - usuwanie ukrtych wierszy

Makro ma odfiltrować wybrany error z masy innych errorów a następnie usunąć z pod spodu wszystko co niepotrzebne. Następnie robi zestawienie użytkowników, u których najczęściej ten błąd wystąpił. Jest to strzał wielokrotny, dzienny, tygodniowy, miesięczny.

konto usunięte

Temat: [VBA] - usuwanie ukrtych wierszy

Witam,
spróbuj poczytać Szybkie usuwanie wierszy. Pozdrawiam.

Temat: [VBA] - usuwanie ukrtych wierszy

ms query na tabeli źródłowej, do tego można agregować dane (po użytkowniku, okresie) i masz gotowy raport, zautomatyzowany i nie tracisz danych źródłowych

skąd bierzesz dane? zrzut z systemu?
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: [VBA] - usuwanie ukrtych wierszy

Co do problemu to nie uwzględnia on przesunięcia o usunięty wiersz.

For lp = 1 To 65536 'loop through all rows
If Rows(lp).EntireRow.Hidden = True Then
Rows(lp).EntireRow.Delete Else
lp = lp -1
end if
Next

Samo rozwiązanie jest wysoce nieefektywne. Rozważ możliwość filtrowania danych (sql, tabela itp).

Temat: [VBA] - usuwanie ukrtych wierszy

Samo rozwiązanie jest nieadekwatne do celu, nie idźcie tą drogą :)

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Witold Sobków

Witold Sobków Problem Analyst

Temat: [VBA] - usuwanie ukrtych wierszy

Dane wyciągam z bazy SQLowej.
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: [VBA] - usuwanie ukrtych wierszy

No to chyba lepszym rozwiązaniem będzie wykonanie "filtrowania" danych już w stringu SQL pobierającym dane i do excela załadowanie już tylko interesującego nas zakresu. Na pewno będzie znacznie szybciej.
Monika M.

Monika M. PROGRAMISTA VBA,
Excel, Access,
Outlook, Word -
SZKOLENIA

Temat: [VBA] - usuwanie ukrtych wierszy

A tabeli przestawnej to nie łaska zastosować, zamiast kombinować z usuwaniem wierszy?
Albo: przyłączam się do przedmówców w kwestii MS Query czy odpowiedniego SQL na źródle.
Witold Sobków

Witold Sobków Problem Analyst

Temat: [VBA] - usuwanie ukrtych wierszy

Pomysł sądzę jak najbardziej słuszny, ale obawiam się, że to jeszcze nie ten poziom 'ekspertstwa' :)



Wyślij zaproszenie do