【问题标题】:Apply formula with VBA using dynamic cell references.使用动态单元格引用通过 VBA 应用公式。
【发布时间】: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,

标签: vba excel loops excel-formula


【解决方案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 帮助。有很多关于如何过滤数据的例子,例如看这个问题stackoverflow.com/questions/35210193/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-05
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
  • 2020-01-26
  • 1970-01-01
  • 2017-07-06
相关资源
最近更新 更多