У меня есть следующий макрос, который повторяет каждую ячейку в указанном столбце. Если ячейка содержит значение строки #VALUE! , он заменяется в среднем на 2 ячейки над и под ним (которые содержат целые числа).

Sub Checker()
Dim Qty As Range

For Each Qty In Range("A1:A5").Cells

    If InStr(1, (Qty.Text), "#VALUE!") Then
    Qty.FormulaR1C1 = "=AVERAGE(R[-2]C:R[-1]C,R[1]C:R[2]C)"

    End If
Next
End Sub

Так:

  A                  A
1  10              1  10
2  10              2  10
3  #VALUE!   ->    3  10
4  10              4  10
5  10              5  10

Теперь я хотел бы, чтобы макрос искал 0 вместо # #VALUE! ,

  A                  A
1  10              1  10
2  10              2  10
3   0        ->    3  10
4  10              4  10
5  10              5  10

Что мне нужно заменить в коде?

Просто заменив "#VALUE!" до "0" не работает. Я предполагаю использовать другую функцию вместо InStr но я не очень знаком с VBA.

1 ответ1

2
If InStr(1, (Qty.Text), "0") Then

проверит, есть ли в строке "0", что может быть не тем, что вы хотите. Пытаться

If Qty.Text = "0" Then

или же

If StrComp(Qty.Text, "0") = 0 Then

для проверки, является ли полная строка "0".

Сравнение полной строки также было бы лучшим решением для "#VALUE!" проверять.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .