使用动态单元格引用通过 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 应用公式。的主要内容,如果未能解决你的问题,请参考以下文章