[英]EXCEL / VBA - Dynamically insert formulas into cells
我有一张桌子,它的行数是未知的。 每次用户在此表的列A中输入一项时,我都希望表中的其他列动态地填充引用刚刚在列A中输入的项目的公式。
我不想简单地将公式一直复制到表格的B,C,D等列中,因为表格中的行数是未知的。
有什么有效的方法可以做到这一点吗?
我在VBA中的onCalculate和onChange事件中编写代码的尝试似乎效率很低,或者导致了永恒的循环。
如果您使用的是Excel 2007或Excel 2010,则将列表范围定义为列表将自动执行此操作!
最好的宏就是没有宏
这是一个示例,只要您的选择发生更改,它将在B,C和D中填充空白公式:
在本工作簿中:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim oSh As Worksheet, oUsed As Range, oRng As Range
Set oSh = Sh
Set oUsed = oSh.UsedRange.Columns("B")
'only add to blank formulas
Set oRng = oUsed.Find("", LookIn:=xlFormulas)
Do While Not oRng Is Nothing
'B formula
oRng.Offset(, 0).FormulaR1C1 = "=RC[-1] + 100"
'C formula
oRng.Offset(, 1).FormulaR1C1 = "=RC[-1] + 100"
'D formula
oRng.Offset(, 2).FormulaR1C1 = "=RC[-1] + 100"
Set oRng = oUsed.Find("", oRng, xlFormulas)
Loop
End Sub
这适用于工作簿中的每个工作表,因此您可能需要测试您所在的工作表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.