EXCEL / VBA – 将公式dynamic插入到单元格中

我有一个表,它的行数是未知的。 每当用户将一个项目input到此表的列A中时,我希望表中的其他列dynamic地使用引用刚刚在列A中input的项目的公式填充。

我不想简单地将公式复制到列B,C,D等所有的方式下我的表,因为工作表中的行数是未知的。

有没有任何有效的方法来做到这一点?

我在VBA的onCalculate和onChange事件中编写代码的尝试看起来非常低效或者导致了永久循环。

如果您使用的是Excel 2007或Excel 2010,则将列表范围定义为List将自动执行此操作!
最好的macros是没有macros

下面是一个样本,只要您的select发生变化,就会在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 

这适用于工作簿中的每个工作表,因此您可能需要testing您所在的工作表。