Указание ячеек и листов в формуле с использованием VBA - PullRequest
0 голосов
/ 31 января 2012

Мне нужен мой макрос для ввода следующей формулы:

Worksheets("U_NEDC_COLD_online_0").Cells(3, A).formula = "=IF(" & Worksheets (U_NEDC_COLD_online_0).Cells(3, AA).Value & "=" & Worksheets(U_NEDC_COLD_online).Cells(3, AA).Value & ";" & Worksheets(U_NEDC_COLD_online).Cells(3, A).Value & ";" & Worksheets(U_NEDC_COLD_online_0).Cells(3, A).Value & ")"

Я также пробовал ту же формулу со свойством ".Address", и она не работает.Что я делаю не так?

Окончательная формула должна выглядеть следующим образом:

=IF($AA3 = U_NEDC_COLD_online!$AA3; U_NEDC_COLD_online!A3; U_NEDC_COLD_online_0!A3)

PS: рабочие таблицы ("U_NEDC_COLD_online_0") не совпадают с рабочими таблицами (U_NEDC_COLD_online_0).(это не опечатка)

Спасибо.

1 Ответ

0 голосов
/ 31 января 2012
  1. Используйте запятые вместо точек с запятой для разделения аргументов оператора IF.

  2. Ваша формула имеет циклическую связь;формула входит в ячейку A3 и ссылается на ячейку A3 ... Я оставлю это вам на усмотрение.

  3. Всегда используйте Option Explicit.Поместив эту строку в верхнюю часть вашего модуля, вы получите ошибку: Variable not defined для переменных: A, AA и, возможно, U_NEDC_COLD_online и U_NEDC_COLD_online_0, которые вы, вероятно, намеревались использовать в качестве строковых литералов.(см. следующий пункт в качестве обходного пути)

  4. Если U_NEDC_COLD_online_0 действительно является именем переменной / константы и не равно строковому литералу, который вы используете в другом месте (например, U_NEDC_COLD_online_0),вы действительно должны изменить имя переменной на что-то другое!

  5. Если единственная причина, по которой вы динамически строите формулу, состоит в том, чтобы разместить переменные индексы строк, используйте это, когда 3 можно заменить напеременная:

    Worksheets("U_NEDC_COLD_online_0").Cells(3, 1).Formula = "=IF($AA" & 3 & "=" & "U_NEDC_COLD_online!AA" & 3 & ", U_NEDC_COLD_online!A" & 3 & ", A" & 3 & ")"

  6. Если вам даже не нужны переменные индексы строк, просто используйте это:

    Worksheets("U_NEDC_COLD_online_0").Range(A3).Formula = "=IF($AA3=U_NEDC_COLD_online!AA3, U_NEDC_COLD_online!A3, A3)"

...