У меня проблема с формулой, размещенной на моем листе через vba. Формула взаимодействует с данными в сводной таблице. При помещении в ячейку Y8 на листе следующая формула работает как нужно (не vba):
=IF(OR(L8="(blank)",L8=""),IF((K8-$A$2)/(365/12)<0,0,(K8-$A$2)/(365/12)),IF((L8-$A$2)/(365/12)<0,0,(L8-$A$2)/(365/12)))
Идея состоит в том, чтобы проверить, является ли L8 null
или (blank)
, если так, то используйте эту формулу: IF((K8-$A$2)/(365/12)<0,0,(K8-$A$2)/(365/12))
. Если L8 имеет значение (будет датой), тогда я хочу использовать эту слегка отличную формулу: IF((L8-$A$2)/(365/12)<0,0,(L8-$A$2)/(365/12)))
.
Столбцы L и K находятся в сводной таблице.
Я использовал activecell.formulaR1C1
, чтобы перевести мою формулу на листе в R1C1. Единственное изменение, которое я сделал, было добавление набора кавычек вокруг "(blank)"
-> ""(blank)""
.
Я все еще получаю сообщение 1004 во время выполнения в строке формулы vba.
Мой VBA-код здесь:
Sub PerformFormulas()
Dim LastRow As Long
LastRow = Worksheets("Calculator").Range("C" & Rows.Count).End(xlUp).Row
Worksheets("Calculator").Range("Y8:Y" & LastRow - 1).FormulaR1C1 = "=IF(OR(RC[-13]=""(blank)"",RC[-13]=""),IF((RC[-14]-R2C1)/(365/12)<0,0,(RC[-14]-R2C1)/(365/12)),IF((RC[-13]-R2C1)/(365/12)<0,0,(RC[-13]-R2C1)/(365/12)))"
End Sub
Я проверил, что LastRow
и Calculator
распознаются правильно и они есть (я сменил простую формулу .select
, и эта часть кода работает нормально).
Заранее спасибо за любую помощь!