|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
版主的方法,VBA获得了一个固定的地址,将来手动调整数据源时,透视表的区域就不对了吧。
应该还是依靠VBA 自定义一个动态数据源(OFFSET),然后创建的透视表引用这个动态数据源。
贴一段我的代码:创建透视表。
Set sjsht = ActiveSheet '数据源表
'定义数据源名称
k = 0
Do
flag = True
flag_Z = False '已经定义过动态数据源
k = k + 1
For Each NA In ActiveWorkbook.Names
If NA.Value = "=OFFSET(" & sjsht.Name & "!$A$1,,,COUNTA(" & sjsht.Name & "!$A:$A),COUNTA(" & sjsht.Name & "!$1:$1))" Then
flag_Z = True
NAname = NA.Name
Exit For
End If
If NA.Name = "数据源" & k And flag_Z = False Then
flag = False
Exit For
End If
Next NA
If flag = True And flag_Z = False Then
NAname = "数据源" & k '数据源名称
ActiveWorkbook.Names.Add Name:=NAname, RefersToR1C1:= _
"=OFFSET(" & sjsht.Name & "!R1C1,,,COUNTA(" & sjsht.Name & "!C1),COUNTA(" & sjsht.Name & "!R1))"
End If
Loop While flag = False And flag_Z = False
|
|