Usuń cały wiersz, jeśli komórka zawiera ciąg x
Jestem nowy w VBA i próbuję wymyślić sposób na usunięcie wszystkich wierszy (i przesunięcie komórek w górę, jeśli to możliwe), gdzie komórka kolumny witryny zawiera słowo none
. Tabela zawiera 5000 + rekordów i zaoszczędziłoby mi to dużo czasu.
6 answers
To nie jest zadanie VBA - to konkretne zadanie najłatwiej wykonać za pomocą automatycznego filtra.
1.Wstaw filtr automatyczny (w Excelu 2010 kliknij Strona główna -> (Edycja) Sortuj i filtruj -> Filtr)
2. Filtruj w kolumnie "strony internetowe"
3. Zaznacz "brak" i usuń je
4. Wyczyść filtr
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-18 08:21:07
Ok wiem, że to dla VBA, ale jeśli chcesz to zrobić dla jednorazowego usunięcia zbiorczego, możesz użyć następującej funkcjonalności Excela: http://blog.contextures.com/archives/2010/06/21/fast-way-to-find-and-delete-excel-rows / Hope this helps anyone
Przykład szukania ciągu "papier":
- w oknie dialogowym znajdź i zamień wpisz "paper" w polu Znajdź Co.
- Kliknij Znajdź wszystkie, aby zobaczyć listę komórek z "papierem"
- wybierz pozycję z listy i naciśnij Ctrl + A, aby wybrać całą listę i wybrać wszystkie" papierowe " komórki w arkuszu.
- na karcie Strona główna wstążki kliknij Usuń, a następnie kliknij Usuń wiersze arkusza.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-02 12:20:48
W zakładce "Developer" przejdź do "Visual Basic" i utwórz moduł. Kopiuj wklej następujący tekst. Pamiętaj o zmianie kodu, w zależności od tego, co chcesz. Następnie uruchom moduł.
Sub sbDelete_Rows_IF_Cell_Contains_String_Text_Value()
Dim lRow As Long
Dim iCntr As Long
lRow = 390
For iCntr = lRow To 1 Step -1
If Cells(iCntr, 5).Value = "none" Then
Rows(iCntr).Delete
End If
Next
End Sub
LRow: umieść liczbę wierszy, które ma bieżący plik.
Liczba " 5 "W" If " jest dla piątej (E) Kolumny
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-01 09:29:03
Chciałbym dodać do odpowiedzi @MBK. Chociaż odpowiedź @MBK okazała się bardzo pomocna w rozwiązaniu podobnego problemu, lepiej byłoby, gdyby @MBK dodał zrzut ekranu, jak filtrować konkretną kolumnę.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-08 16:13:38
To było nawiązanie do innego komentarza, ale można spróbować czegoś takiego.
Sub FilterAndDelete()
Application.DisplayAlerts = False
With Sheet1 'Change this to your sheet name
.AutoFilterMode = False
.Range("A3:K3").AutoFilter
.Range("A3:K3").AutoFilter Field:=5, Criteria1:="none"
.UsedRange.Offset(1, 0).Resize(ActiveSheet.UsedRange.Rows.Count - 1).Rows.Delete
End With
Application.DisplayAlerts = True
End Sub
Nie testowałem tego i jest to z pamięci, więc może wymagać pewnych poprawek, ale powinno wykonać zadanie bez zapętlania tysięcy wierszy. Musisz usunąć 11-Jul, aby UsedRange
było poprawne lub zmienić przesunięcie na 2 wiersze zamiast 1 w .Offset(1,0)
.
Ogólnie, zanim zrobię .Delete
uruchomię makro z .Select
zamiast Delete w ten sposób mogę być pewien, że poprawny zakres zostanie usunięty, co może być warte sprawdzenia, aby upewnić się, że odpowiedni zakres jest usuwany.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-12 02:50:15
Spróbuj tego ...
Dim r as Range
Dim x as Integer
For x = 5000 to 4 step -1 '---> or change as you want //Thanx 4 KazJaw
set r = range("E" & format(x))
if ucase(r.Value) = "NONE" then
Rows(x).EntireRow.Delete
end if
Next
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-12 07:21:59