VBA 公式多个工作表中的动态范围

Dynamic range in VBA formula multiple worksheets

考虑以下代码,我在其中插入了一个 Excel 公式来执行非常简单的计数。

dim wb as Workbook
dim ws as Worksheet
dim ws_a as Worksheet

set wb = ThisWorkbook
set ws = wb.Worksheets("D")
set ws_a = wb.Worksheets("A")

With ws_a
.Range("c2").Formula = _
"ROWS(UNIQUE(FILTER(" & "D"! & Range("c2:c400").Address & "," & _
"IF(" & .Range("a2").Address(0,0) & " =""Empty"","""",""*""& " & .Range("a2").Address(0,0) & " &""*""))"
'following part of code
End With

如您所见,Sheet“D”中的范围不是动态的。考虑到范围内的空单元格,我想让它变得动态。基本上,我需要更换

Range("c2:c400")

类似

D.Range("c2"),D.Cells(D.Range("c2").SpecialCells(xlCellTypeLastCell).Row, 3))

在尝试连接字符串时,我肯定迷失了 &"",所以我认为这是问题所在:我对这种语法的了解不多。 我也尝试调暗并设置所需的范围(在公式之外),但代码引用了错误的 sheet,好像它无法识别公式中不同的 sheet。

Dim wb as Workbook, ws as Worksheet, ws_a as Worksheet
Set wb = ThisWorkbook: Set ws = wb.Worksheets("D"): Set ws_a = wb.Worksheets("A")

Dim rngFilter as Range: Set rngFilter = ws_a.Range("c2:C400")
Set rngFilter = Range(rngFilter.Cells(1), rngFilter.SpecialCells(xlCellTypeLastCell))

With ws_a
    .Range("c2").Formula = _
    "ROWS(UNIQUE(FILTER(" & rngFilter.Address & "," & _
    "IF(A2 =""Empty"","""",""*""& A2 &""*""))"
    'following part of code

End With