首页 > 解决方案 > 如何通过 VBA 将动态范围从另一个工作表引用到活动工作表单元格

问题描述

我没有在公式中获得动态范围工作表名称。有人可以帮忙吗?我得到公式中的活动工作表范围为=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

标签: vbaexcelexcel-formula

解决方案


看看Range.Address 属性纪录片

.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)

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

MyRange.Address(RowAbsolute:=False, ColumnAbsolute:=False, External:=True)

所以而不是例如I3:I31结果会像'Main Sheet'!I3:I31


推荐阅读