繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM