使用具有特定工作表名称的 VBA 创建数据透视表

帕兰

尝试使用以下代码创建枢轴,但出现错误。

ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$EX$45741"), , xlYes).Name _

    = "Table1"

  Range("Table1[[#Headers],[Rec Coverage Area]]").Select



  PivotSheetName = "Pivot Cash " + Format(Date, "MM DD YYYY")

  Sheets.Add.Name = PivotSheetName





  ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _

    "Table1", Version:=xlPivotTableVersion14).CreatePivotTable TableDestination _

    :=PivotSheetName & "!R3C1", TableName:="PivotTable20", DefaultVersion:= _

    xlPivotTableVersion14

该错误与代码有关:

TableDestination _

        :=PivotSheetName & "!R3C1",

此外,我在第一行中创建表的等待仅针对特定范围创建:Range("$A$1:$EX$45741")

但是 tabke 可以是动态的,可以有更多的列/行。我如何获得将根据行/列创建范围的代码。(A 列单元格将具有一些值,因此我们可以获得 A 列的最后一行,第 1 行将具有一些值,因此我们可以获得第 1 行的最后一列。)

法尼杜鲁

关于精确的范围定义(如您所说,指的是第 1 列和第 1 列):

Sub RangeDefinition()
 Dim sh As Worksheet, lastRow As Long, lastCol As Long, rng As Range
   Set sh = ActiveSheet 'use here your needed sheet
   lastRow = sh.Range("A" & Rows.count).End(xlUp).Row
   lastCol = sh.Cells(1, Columns.count).End(xlToLeft).Column
   Set rng = sh.Range(sh.Range("A1"), sh.Cells(lastRow, lastCol))
    Debug.Print rng.Address 'in order to check if it returns what you need...
End Sub

请尝试完全定义您的变量。ActiveSheet如果您的活动工作表错误地不同,则可能会带来问题。在我的代码中,我ActiveSheet仅用于测试目的,建议使用您的(真实)工作表名称。

UsedRange 如果工作表刚刚创建并且您没有在现有数据下进行任何格式修改,则可以工作......通过这种方式,可以计算范围边距。

对于另一个问题,首先尝试: TableDestination:=PivotSheetName & "!R3C1",

代替 TableDestination _

    `:=PivotSheetName & "!R3C1",`

至少,删除中间的空行。这种方式仅适用于连续行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章