使用动态单元格引用通过 VBA 应用公式。

Posted

技术标签:

【中文标题】使用动态单元格引用通过 VBA 应用公式。【英文标题】:Apply formula with VBA using dynamic cell references. 【发布时间】:2018-10-15 00:42:15 【问题描述】:

您好,我正在尝试根据条件将公式应用于一系列单元格。但是,如果我遍历应用公式的单元格,那么它会在没有动态单元格引用的情况下应用它。 (就像我试图通过单击初始单元格的右下角手动向下拖动公式一样)。我将如何使应用公式中的单元格引用动态化?任何帮助将不胜感激。

这是我的代码:

Sub OQWDays()
Dim oqs As Worksheet

Set oqs = Sheets("SQL_IMPORT")

    For x = 2 To oqs.Cells(Rows.Count, "A").End(xlUp).Row

        If oqs.Range("J" & x).Value = ("CBN_Suisse") Then oqs.Range("A" & x).Formula = "=NETWORKDAYS(D2,PUBLIC_HOLIDAYS!$G$3,PUBLIC_HOLIDAYS!$E$44:$E$61)"

    Next x
End Sub

【问题讨论】:

所以您希望 D2 更改为 Dx 其中 x 是行号? D" & x & ",替换D2, 【参考方案1】:

认为你是这个意思。从字符串中取出 2 并替换为 x?

Sub OQWDays()

Dim oqs As Worksheet

Set oqs = Sheets("SQL_IMPORT")

For x = 2 To oqs.Cells(Rows.Count, "A").End(xlUp).Row
    If oqs.Range("J" & x).Value = "CBN_Suisse" Then
        oqs.Range("A" & x).Formula = "=NETWORKDAYS(D" & x & ",PUBLIC_HOLIDAYS!$G$3,PUBLIC_HOLIDAYS!$E$44:$E$61)"
    End If
Next x

End Sub

【讨论】:

谢谢,Scott Craner 发布了相同的解决方案,效果很好,所以谢谢你们。 很高兴它成功了。您可能还需要考虑使用 AutoFilter 来避免循环,尤其是在您有很多行的情况下。 只是好奇,如果没有循环和自动筛选,您将如何运行此过程?你能告诉我或指向一个解释它的指南/教程吗?我还没有听说过 AutoFilter 方式。 您最好的选择是诚实地 google 和/或咨询 VBA 帮助。有很多关于如何过滤数据的例子,例如看这个问题***.com/questions/35210193/…

以上是关于使用动态单元格引用通过 VBA 应用公式。的主要内容,如果未能解决你的问题,请参考以下文章

excel2007 VBA中如何引用指定的单元格地址?

excel或者vba,怎样将工作簿内所有橙色单元格公式转换为数值?

更改单元格引用的 VBA 到 FillDown 公式

VBA设置单元格的公式

具有动态单元格引用的公式

应用公式,然后自动填充数据,直到列中的最后一个可见单元格:VBA