将公式写入单元格时会自动插入不需要的括号

时间:2014-06-13 17:00:28

标签: excel vba formula brackets

我试图在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

2 个答案:

答案 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)))"