方案::我有一个代码,应该将公式写入工作表单元格。此公式用于API检索某些值。我的公式位于循环中(此操作针对多列完成),并引用第一行作为标识符。
原始公式:
=FS(B1;"FI(DATE,,DATE)")
带有浮动引用(在循环内)的修改后公式:
For i = 1 To lColumn
If wb.Worksheets("Dates").Cells(i, 1).Value <> "" Then
wb.Worksheets("Dates").Cells(i,2).value = "=FS(" & i & "1;"FI(DATE,,DATE)")"
End If
Next i
lColumn是一些预定义的数字。
问题:在循环的公式部分中,我不断收到“意外的语句结尾”错误。
我已经尝试过的方法:我尝试了不同的变体,例如重新定位了“ s”和“ s”。
wb.Worksheets("Dates").Cells(i,2).value = "'"=FS(" & i & "1;"FI(DATE,,DATE)")""
或
wb.Worksheets("Dates").Cells(i,2).value = "'=FS(" & i & "1;"FI(DATE,,DATE)")"
或
wb.Worksheets("Dates").Cells(i,2).value = "'""=FS(" & i & "1;"FI(DATE,,DATE)")"
,依此类推。但是错误仍然存在。
问题:执行此操作的正确方法是什么?
答案 0 :(得分:3)
在VBA中使用公式有点棘手:
要编写公式,请使用range.formula
属性,而不要使用.value
。
您必须像使用英文Excel一样编写公式。参数分隔符是逗号(不是分号)。
? activecell.formula
尝试(未经验证,因为您需要的公式对我们无效)
with wb.Worksheets("Dates")
dim f as string, adr as string
adr = cells(i, 1).address(false, false) ' get rid of Dollar signs
f = "=FS(" & adr & ",""FI(DATE,,DATE)"")"
.Cells(i, 2).formula = f
end with
答案 1 :(得分:1)
wb.Worksheets("Dates").Cells(i,2).formula = "=FS(" & Cells(1, i).Address(0,0) & ";""FI(DATE,,DATE)"")"
可能有更好的方法将列号转换为字母(这是您遇到的问题以及双引号)!