我正在尝试找出正确的语法,以便我的字符串变量 colLetter 将在SUM工作簿函数中进行评估,而不是作为文字文本“colLetter”读取。
colLetter 在每个列范围的循环中存储字符串:“A:A”,然后是“B:B”,“C:C”等等......
我有一个函数Col_Letter(整数)As String,它接受一个整数并返回整数对应的excel中的列字母的String。示例:Col_Letter(3)返回“C”
现在我的循环看起来像这样:
For c = 3 To lastColumn
Dim colLetter As String
colLetter = Col_Letter(c) & ":" & Col_Letter(c)
Cells(lastRow + 1, c).Formula = "=SUM(colLetter)"
Next
我希望公式返回= SUM(“A:A”),= SUM(“B:B”)等......但它返回= SUM(colLetter)而不是#Value!
我无法弄清楚需要使用总和公式的语法修复什么。任何帮助将不胜感激!
答案 0 :(得分:2)
如果使用R1C1参考,则不需要:
Cells(lastRow + 1, 3).Resize(, lastColumn - 2).FormulaR1C1 = "=SUM(R1C:R[-1]C)"
A1参考替代方案:
Cells(lastRow + 1, 3).Resize(, lastColumn - 2).Formula = "=SUM(C1:C" & lastRow & ")"
答案 1 :(得分:1)
没有必要得到列的字母,使用数字,它更快。
此外,如果您尝试将整个列与同一列中的公式相加,您将收到循环引用错误。
For c = 3 To lastColumn
Cells(lastRow + 1, c).Formula = "=SUM(" & Range(Cells(1,c),Cells(lastRow, c)).Address & ")"
Next
答案 2 :(得分:0)
一种解决方案是改变你的功能:
Function Col_letter(iCol As Long) As String
If iCol > 0 And iCol <= Columns.Count Then
Col_letter = Evaluate("substitute(address(1, " & iCol & ", 4), ""1"", """")")
End If
End Function