Mam tabeli w programie Excel o nazwie tblFruits
z 10 kolumn i chcę usunąć wiersze, gdzie Fruit
kolumna zawiera Apple
. Jak mogę to zrobić?Jak usunąć wiersze w obiekcie ListView programu Excel na podstawie kryteriów przy użyciu języka VBA?
Q
Jak usunąć wiersze w obiekcie ListView programu Excel na podstawie kryteriów przy użyciu języka VBA?
6
A
Odpowiedz
7
następujące prace podrzędne:
Private Sub deleteTableRowsBasedOnCriteria(tbl As ListObject, columnName As String, criteria As String)
Dim x As Long, lastrow As Long, lr As ListRow
lastrow = tbl.ListRows.Count
For x = lastrow To 1 Step -1
Set lr = tbl.ListRows(x)
If Intersect(lr.Range, tbl.ListColumns(columnName).Range).Value = criteria Then
'lr.Range.Select
lr.Delete
End If
Next x
End Sub
Sub można wykonać tak:
Dim tbl As ListObject
Set tbl = ThisWorkbook.Worksheets("Sheet1").ListObjects("tblFruits")
Call deleteTableRowsBasedOnCriteria(tbl, "Fruit", "Apple")
2
Cóż, wydaje się, że nieruchomość .listrows jest ograniczona albo jedna lista wierszu lub Lista wszystkich wierszy .
Najprostszym sposobem znalazłem obejść ten był:
utworzenie kolumny z formułą, która przypomina mi wszystkich wierszy Chcę wyeliminować (może nie trzeba formułę, w tym przypadku)
sortowanie listobject na danej kolumny (najlepiej podejmowania go tak, że mój stosunek do usunięcia byłby na końcu sortowaniu)
Pobieranie adresu zakresie listrows I będzie del ete
Wreszcie, usunięcie zakresu pobranego, przenoszenie komórek w górę.
W tym szczególnym kawałek kodu:
Sub Delete_LO_Rows
Const ctRemove as string = "Remove" 'value to be removed
Dim myLO as listobject, r as long
Dim N as integer 'number of the listcolumn with the formula
Set myLo = Sheet1.ListObjects("Table1") 'listobject goes here
With myLO
With .Sort
With .SortFields
.Clear
.Add Key:=.HeaderRowRange(myLO.ListColumns(N)), SortOn:= _
xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
End With
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
On Error GoTo NoRemoveFound
r = Application.WorksheetFunction.Match(ctRemove, .ListColumns(.ListColumns.Count).DataBodyRange, 0)
Range(.parent.name & "!" & .DataBodyRange(r, 1).Address & ":" & .DataBodyRange(.ListRows.Count, .ListColumns.Count).Address).Delete xlShiftUp
'Added the .parent.name to make sure the address is on the correct sure, but it will fail if there are any spaces or characters on the sheet name that will make it need a pair of '.
'The error is just to skip these two lines in case the match returns an error. There's likely a better/cleaner way to do that.
NoRemoveFound:
End With
End sub
nadzieję, że to pomaga ...
Powiązane problemy
- 1. Filtrowanie tabeli przestawnej programu Excel przy użyciu VBA
- 2. Przycinanie komórek przy użyciu języka VBA w programie Excel
- 3. Jak zmienić nazwę tabeli dostępu przy użyciu języka VBA z programu Excel?
- 4. Excel VBA - Usuń puste wiersze w tabeli
- 5. Usuń wszystkie zduplikowane wiersze Excel vba
- 6. Jak zmodyfikować istniejący skoroszyt programu Excel za pomocą języka Perl?
- 7. Aktualizuj wiele wierszy na podstawie kryteriów hibernacji
- 8. Dokumentacja dla programu Excel Makra VBA
- 9. Usuwanie zdjęć za pomocą programu Excel VBA
- 10. Jak ustawić fokus na dowolnym obiekcie w MS Access przy użyciu VBA
- 11. Jak usunąć wiersze z ramki danych na podstawie funkcji podzestawu?
- 12. Nagłówki dla arkusza programu Excel przy użyciu EPPlus
- 13. Excel: Jak sprawdzić, czy komórka jest pusta przy użyciu VBA?
- 14. Python: czytanie dużych arkuszy programu Excel przy użyciu Openpyxl
- 15. Jak wyświetlić część programu Excel na formularzu VBA
- 16. Konwertowanie formuły komórki na tekst za pomocą programu excel vba
- 17. Otwieranie dostępu z programu Excel VBA
- 18. Alternatywa dla edytora VBA programu Excel?
- 19. Techniki debugowania programu Excel VBA "Brak pamięci"
- 20. Ukrywanie arkusza programu Excel z VBA
- 21. Utwórz tabelę SQL z programu Excel VBA
- 22. Wykonaj polecenie w wierszu polecenia za pomocą programu excel VBA
- 23. Jak usunąć wiersze w Yii2?
- 24. Jak usunąć wiersze z wartościami 0 przy użyciu R
- 25. Osadzanie obrazu na arkuszu kalkulacyjnym programu Excel - VBA
- 26. Sortowanie Arkusz danych według wartości kolumn przy użyciu Excel VBA
- 27. Jak uzyskać identyfikator procesu bieżącej instancji programu Excel, za pomocą języka VBA, bez używania podpisu?
- 28. Jak pobrać plik przy użyciu VBA (bez przeglądarki internetowej)
- 29. Jak usunąć według kryteriów w stanie hibernacji?
- 30. Jak wywołać skrypt Pythona na excel vba?
duplikat: http://stackoverflow.com/questions/7648655/how-to-delete- rows-in-excel-based-on-criteria-using-vba –