Найти значение в столбце и вернуть значение той же строки, но другого столбца - PullRequest
0 голосов
/ 10 апреля 2020

Я хотел бы найти значение "# N / A" через столбец и, если оно найдено, вернуть значение той же строки, но другого столбца. Это код, который я написал:

Sub TestFind()

    Dim r1(), r2()

    r1 = Range("B2:B1000")
    r2 = Range("A2:A1000")

    For i = LBound(r1, 1) To UBound(r1, 1)
        If r1(i, 1) = "#N/A" Then r2(i, 1) 
    Next i

    Range("B3:B1000") = r1

End Sub

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

используйте SpecialCells() метод Range объекта для l oop через ячейки только с ошибкой и используйте функцию CVERR для проверки типа ошибки:

Dim cel As Range
For Each cel In Range("B2:B1000").SpecialCells(xlCellTypeFormulas, xlErrors) ' loop through cells with errors
   If cel.Value = CVErr(xlErrNA) Then MsgBox cel.Offset(, -1).Value
Next
0 голосов
/ 10 апреля 2020

Я сомневаюсь, что вы можете использовать ""N/A в качестве реальной строки, вместо этого вы можете использовать WorksheetFunction.IfError() или WorksheetFunction.IfNa().

Более того, почему бы вам не использовать упомянутые функции в формуле ( который вы помещаете в столбец C, что-то вроде:

=IfNA(A2;B2)

Перетаскивая эту формулу до конца (строка 1000), вы можете получить тот же результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...