我有一张表,它的行数未知。每次用户将项目输入到此表的A列中时,我希望表格中的其他列动态填充引用刚刚在A列中输入的项目的公式。
我不想简单地将公式复制到我的工作表中的B,C,D等列中,因为工作表中的行数是未知的。
有没有有效的方法呢?
我在VBA中的onCalculate和onChange事件中编写代码的尝试似乎非常低效或导致永久循环。
答案 0 :(得分:2)
如果您使用的是Excel 2007或Excel 2010,则将列表范围定义为 列表 将自动执行此操作!
最好的宏没有宏
答案 1 :(得分:1)
以下是一个示例,只要您的选择发生变化,它就会填写B,C和D中的空白公式:
在ThisWorkbook中:
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
这适用于工作簿中每个工作表,因此您可能需要测试自己所在的工作表。