通过VBA将复杂公式放置到图纸上并与数据透视表进行交互的问题

时间:2019-05-09 22:16:00

标签: excel vba excel-formula

我对通过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)""周围添加了一组引号。

我在vba的公式行上仍收到运行时1004消息。

我的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

我检查了LastRowCalculator是否被正确识别并且它们是正确的(我更改为简单的.select公式,并且该部分代码可以正常工作)。

在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您没有逃避另外一对引号:

"=IF(OR(RC[-13]=""(blank)"",RC[-13]=""), ...

应该是

"=IF(OR(RC[-13]=""(blank)"",RC[-13]=""""), ...