我试图在Excel中为单元格设置公式但我有一个奇怪的问题。行:
Range("BG4").Formula = "=CustomSum(BG:BG)"
它工作正常,并将正确的公式设置到单元格中。但我有另一行代码:
Range("BH4").Formula =
"=if(R1C1<>"""","""",if(CustomSum(BH:BH)=0,""geplant!"",CustomSum(BH:BH)))"
此行在单元格中生成一个如下所示的公式:
=IF($A$1<>"";"";IF(CustomSum(BH:(BH))=0;"geplant!";CustomSum(BH:(BH))))
这是不可接受的,因为它不起作用(参数中的括号会自动插入)。
我该如何避免?
CustomSum看起来如下:
Public Function CustomSum(rng As Range)
Dim Sum As Double
Sum = 0
For row = 10 To 48 Step 2
If IsNumeric(Cells(row, rng.Column).Value) Then
Sum = Sum + Cells(row, rng.Column).Value
End If
Next
CustomSum = Sum
End Function
答案 0 :(得分:0)
为了答案,复制自@simoco的评论:
"=if(R1C1<>"""","""",if(CustomSum(BH:BH)
...你不能混合使用R1C1和普通公式
答案 1 :(得分:0)
我遇到了同样的问题,并在这里找到了答案:Absolute referencing - Inserting the equivalent of '$' in an equation written in R1C1 notation。
长话短说,由于公式的开头有R1C1,因此BH:BH也必须位于R1C1坐标中。 BH是第60列。我不确定如何像在BH:BH中那样指定整个列,但是如果总行数始终小于某个数字(500?6000 ?,具体取决于您的数据),则可以指定范围很大,希望它能正常工作。
如果您为列指定了标题,并且您的数据从第2行开始,那么我会这样写:
Range("BH4").Formula =
"=if(R1C1<>"""","""",if(CustomSum(R2C60:R6000C60)=0,""geplant!"",CustomSum(R2C60:R6000C60)))"