如何通过VBA将动态范围从另一个工作表引用到活动工作表单元格

Man*_*ish 2 excel vba excel-vba excel-formula

我没有在公式中获得动态范围工作表名称.任何人都可以协助吗?我得到公式中的活动工作表范围=COUNTIF(I3:I31,A3)

Sub Test_DaySumm()

Dim Rg As Range
wksMain.Select
Dim ws1 As Worksheet
Set ws1 = wksMain

If ws1.FilterMode = True Then ws1.ShowAllData
LastRow = ws1.Cells(Rows.Count, "I").End(xlUp).Row
Set MyRange = ws1.Range(Cells(3, 9), Cells(LastRow, 9))

wksDaySummary.Select
xRow = 3
Do Until wksDaySummary.Cells(xRow, 1) = ""
    Set Rg = wksDaySummary.Cells(xRow, 2)
    Rg.Formula = "=COUNTIF( " & MyRange.Address(0, 0) & "," & Rg.Offset(0, -1).Address(0, 0) & ")"
    Rg.Value = Rg.Value
    xRow = xRow + 1
DoEvents
Loop

End Sub
Run Code Online (Sandbox Code Playgroud)

Pᴇʜ*_*Pᴇʜ 6

看看Range.Address Property纪录片

.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)
Run Code Online (Sandbox Code Playgroud)

并使用External:=True参数get获取地址中的工作表名称:

MyRange.Address(RowAbsolute:=False, ColumnAbsolute:=False, External:=True)
Run Code Online (Sandbox Code Playgroud)

因此,而不是I3:I31像结果那样'Main Sheet'!I3:I31