Код Excel VBA для фильтрации указанных столбцов c и удаления данных из других столбцов - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь отфильтровать данные из столбца H в своем листе Excel на основе имени "IBM_Software" и удалить данные иерархии в столбце J того же листа. Ниже приведен код, который я использовал, но он работает не так, как я хочу, и удаляет строку сверху, что тоже плохо.

Sub Delete_Rows_Based_On_Value()
'Apply a filter to a Range and delete visible rows
'Source: https://www.excelcampus.com/vba/delete-rows-cell-values/


'''
Dim ws As Worksheet

  'Set reference to the sheet in the workbook.
  Set ws = ThisWorkbook.Worksheets("BDDASHBTEMPLATEFYTD21BILLING3")
  ws.Activate 'not required but allows user to view sheet if warning message appears

  'Clear any existing filters
  On Error Resume Next
    ws.ShowAllData
  On Error GoTo 0

  '1. Apply Filter
  ws.Range("A:P").AutoFilter Field:=8, Criteria1:="IBM_Software"

  '2. Delete Rows
  Application.DisplayAlerts = False
   Sheets("BDDASHBTEMPLATEFYTD21BILLING3").AutoFilter.Range.Offset(1).Delete xlShiftUp
  Application.DisplayAlerts = True


  '3. Clear Filter
  On Error Resume Next
    ws.ShowAllData
  On Error GoTo 0

End Sub

1 Ответ

0 голосов
/ 11 марта 2020

Ваше решение не работает, вероятно, означает, что вы получаете ошибку. Также маловероятно, что у вас есть данные в каждой строке на листе. Вы не можете сместить одну строку, если вы используете каждую строку. Я оставлю это на ваше усмотрение, чтобы выяснить, как найти последний ряд (LR). Это решение удаляет только отфильтрованные строки, ваше решение удалит все.

ws.Range("A1:P" & LR).AutoFilter Field:=8, Criteria1:="IBM_Software"
ws.Range("A1.P" & LR).Offset(1,0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...