FormulaR1C1不适用于SUMME

时间:2016-07-13 07:52:43

标签: vb.net excel vba excel-vba excel-formula

FormulaR1C1方法无法正常工作。

objExcel = CreateObject("Excel.Application")
    objWorkbook = objExcel.Workbooks.Add
    Dim Formula As String
    Formula = "=SUMME(Z1S1;Z2S1)"
    For i = 1 To 5 Step 1
        objWorkbook.Worksheets("Tabelle1").Cells(i, 1).FormulaR1C1 = 5
        objWorkbook.Worksheets("Tabelle1").Cells(i, 5).FormulaR1C1 = "Text"
        objWorkbook.Worksheets("Tabelle1").Cells(i, 3).FormulaR1C1 = Formula
    Next

这应该在第三列中给我10次5次,但事实并非如此。我甚至尝试过:

Formula = "=SUMME(Z[0]S[-2];Z[1]S[-2])"

但这也不起作用。当来到分配线时,Loop就会中断:(。如果我尝试使用

Formula = "=SUMME(Z1S1,Z2S1)"

它完全执行但它不适用于excel,因为它在Excel字段中显示= SUMME('Z1S1';'Z2S1')

1 个答案:

答案 0 :(得分:3)

如果您打算使用包含非EN-US功能的字符串,则必须使用Range.FormulaLocal propertyRange.FormulaR1C1Local property。 VB.Net 期望一个EN-US公式,并将其转换为工作表的区域语言。

Formula = "=SUM(A1, B2)"
'or depending on your requiements,
Formula = "=SUM(A1:B2)"
.Formula = Formula

Formula = "=SUM(R1C1, R2C2)"
'or depending on your requiements,
Formula = "=SUM(R1C1:R2C2)"
.FormulaR1C1 = Formula

Formula = "=SUMME(Z1S1;Z2S1)"
'or depending on your requirements,
Formula = "=SUMME(Z1S1:Z2S1)"
.FormulaLocalR1C1 = Formula

不要将xlA1单元格引用与xlR1C1引用混淆。 R23 表示xlA1中的细胞(23,18)和xlR1C1中的23:23。

请注意,使用Range.Formula propertyRange.FormulaR1C1 property会强制使用逗号(EN-US标准)而不是分号作为系统列表分隔符。

<子> Range.Formula property
Range.FormulaR1C1 property
Range.FormulaLocal property
Range.FormulaR1C1Local property