VBA If Формула оператора в функции цикла и диапазона для получения значения ячейки - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь присвоить формулу If определенной ячейке в каждой 16-й строке. Формула должна сравнивать значения ячеек в столбцах J, K и L и дает результат «Пройдено» или «Ошибка».

У меня проблемы с этим, если формула работает в цикле. Пожалуйста помоги! Мой код ниже.

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

Во-вторых, есть ли другой способ заставить их работать? Мне нужна та же формула, примененная к ячейке M5 до M789 в каждой 16-й ячейке

For a = 5 To 789 Step 16

   Range("M" & a).FormulaR1C1 = "=IF(Range("J" & a)>= Range("K" & a),IF(Range("J" & a))<= Range("L" & a),""PASS"", ""FAIL""),""FAIL"")"

1 Ответ

3 голосов
/ 07 ноября 2019
  1. Вам нужно .Formula вместо .FormulaR1C1 - вы не используете ссылки R1C1.

  2. Удалите вызовы Range из части формулы. Это смешивает VBA с обычным синтаксисом формул рабочего листа.

  3. Вы можете упростить формулу, используя AND. И в этом случае вам вообще не нужно объединять a. Excel достаточно умен, чтобы обновлять относительные ссылки.

Sub Test()
    Dim myFormula As String
    myFormula = "=IF(AND(J5>=K5,J5<=L5),""PASS"",""FAIL"")"

    Dim a As Long
    For a = 5 To 789 Step 16
        Range("M" & a).Formula = myFormula
    Next
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...