EXCEL / VBA - 将公式动态插入单元格

时间:2011-08-25 17:15:49

标签: excel events vba

我有一张表,它的行数未知。每次用户将项目输入到此表的A列中时,我希望表格中的其他列动态填充引用刚刚在A列中输入的项目的公式。

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

有没有有效的方法呢?

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

2 个答案:

答案 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

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