Удалить строки с ошибкой для каждого листа в одной книге - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть электронная таблица с 7 одинаковыми листами, на которой отображаются немного другие данные. Это смесь данных и диаграмм с каждой ячейкой, ссылающейся на мой «Выходной» лист через серию индексных совпадений. Я просто хочу удалить строки, где ячейка (ii, 2) упала (нет данных для этой конкретной точки данных в выходном листе) для каждого из моих 7 листов. Последняя строка данных на каждом из моих листов - 212, и я всегда хочу, чтобы она ссылалась на ячейку (ii, 2) - точку данных второго столбца для каждой строки. Поскольку есть блоки с диаграммами и без данных, я не могу использовать метод End Xlup

У меня есть следующий код:

Dim lr As Long
Dim sh As Integer
Dim ii As Long


lr = Cells(212, 2)

For sh = 1 To Worksheets.Count

    For ii = lr To 1 Step -1

        If Worksheets(sh).Cells(ii, 2) = CVErr(xlErrNA) Then

            Worksheets(sh).Rows(ii).EntireRow.Delete

        End If

    Next ii

Next sh

Он работает нормально, но ничего не делает, и я не могу понять, почему

1 Ответ

0 голосов
/ 01 ноября 2018

В дополнение к вышеприведенному комментарию вы не можете напрямую проверить наличие определенного типа ошибки. Сначала необходимо проверить, содержит ли ячейка какую-либо ошибку, чтобы избежать ошибки несоответствия типов. Отсутствие этой ошибки говорит о том, что ваш цикл вообще не работает.

Sub x()

Dim lr As Long
Dim sh As Integer
Dim ii As Long

lr = 212 'Cells(212, 2)

For sh = 1 To Worksheets.Count
    For ii = lr To 1 Step -1
        If IsError(Worksheets(sh).Cells(ii, 2)) Then
            If Worksheets(sh).Cells(ii, 2) = CVErr(xlErrNA) Then
                Worksheets(sh).Rows(ii).EntireRow.Delete
            End If
        End If
    Next ii
Next sh

End Sub
...