如何在列中的每个单元格中插入具有动态值的函数
2023-06-22
62
我试图在未知行数的“F”列的每个单元格中粘贴并执行一个函数。
该函数为
=QM_Stream_Delta(Value)
其中
Value
是相应行的“A”列的单元格内容。
这是我目前的 VBA 脚本:
Sub GetDelta()
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
Dim i As Integer
myFormula = "=QM_Stream_Delta(Value)"
For i = 9 To FinalRow
OptionSymbol = Cells(i, "A")
Cells(i, "F").Value(myFormula(OptionSymbol)
Next i
End Sub
但我不确定如何在那里实际获取函数 - 我得到了一个语法错误
Cells(i, "F").Value(myFormula(OptionSymbol)
3个回答
这是
Formula2R1C1
的另一个用例。
Sub GetDelta()
Dim Target As Range
Set Target = Range("F1").Resize(Cells(Rows.Count, 1).End(xlUp).Row)
Set Target = Intersect(Target, Target.Offset(8))
Target.Formula2R1C1 = "=@QM_Stream_Delta(RC1)"
End Sub
我们应该养成完全限定引用的习惯。在这里,我将目标范围限定为 Delta 工作表。
Sub GetDelta()
Dim Target As Range
With ThisWorkbook.Worksheets("Delta")
Set Target = .Range("F1").Resize(.Cells(Rows.Count, 1).End(xlUp).Row)
Set Target = Intersect(Target, Target.Offset(8))
End With
Target.Formula2R1C1 = "=@QM_Stream_Delta(RC1)"
End Sub
TinMan
2023-06-22
我注意到的一个问题是,您从第
9
行而不是第
1
行开始循环。您的屏幕截图显示您
希望
插入的公式从第
1
行开始。
我更改了您的宏以构建您想要的 “函数” ,然后将其放入单元格中。
函数:
Sub GetDelta()
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
Dim i As Integer
Dim myFormula As String
For i = 1 To FinalRow
myFormula = "=QM_Stream_Delta(A" & i & ")"
Cells(i, "F").Formula = myFormula
Next i
End Sub
我运行它,它用函数填充了
F
列。我不知道
QM_Stream_Delta()
函数是什么,但 VBA 宏将公式放在单元格中:
现在您可以运行 VBA 函数,并在您想要的行、您想要的列中自动添加对
QM_Stream_Delta()
的调用:
A | B | C | D | E | F |
---|---|---|---|---|---|
A |
=QM_Stream_Delta(A1)
|
||||
B |
=QM_Stream_Delta(A2)
|
||||
C |
=QM_Stream_Delta(A3)
|
就我个人而言,我不太明白这样做的好处;Excel 已经具备快速填充一列值的能力。( Ctrl + D )
Ian Boyd
2023-06-22
在公式中使用对单元格的引用。
Sub GetDelta()
Const StartRow As Long = 9
Dim FinalRow As Long
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
Range("F" & StartRow & ":F" & FinalRow).Formula = "=QM_Stream_Delta(A" & StartRow & ")"
End Sub
BigBen
2023-06-22