macrosselect所有数据透视表

我正在试图创build一个数据透视表的macros。 我需要macros来select表单中的所有数据; 我的一个朋友帮我创build了上面的代码,但是macros只select了前两列数据而不是全部48列。 有没有人看到我们可能犯的错误? 任何反应将不胜感激! 总是会有48列,然而行数会有所不同。

Dim lastRow As Long Dim lastCol As Long lastRow = 1 lastCol = 1 While Sheets("Sheet1").Cells(lastRow, lastCol).Value <> "" lastCol = lastCol + 1 Wend lastCol = lastCol - 1 While Sheets("Sheet1").Cells(lastRow, 1).Value <> "" lastRow = lastRow + 1 Wend lastRow = lastRow - 1 ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "Sheet1!R1C1:R" & lastRow & "C" & lastCol, Version:=xlPivotTableVersion12).CreatePivotTable _ TableDestination:="", TableName:="PivotTable1", DefaultVersion:= _ xlPivotTableVersion12 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) 

要获得最后一列数据,请尝试replace

 While Sheets("Sheet1").Cells(lastRow, lastCol).Value <> "" lastCol = lastCol + 1 Wend 

对于

 lastCol = Sheets("Sheet1").Cells(1, Sheets("Sheet1").Columns.Count).End(xlToLeft).Column 

这将会为您提供第一行数据右侧的最后一列。

 While Sheets("Sheet1").Cells(lastRow, 1).Value <> "" lastRow = lastRow + 1 Wend 

对于

 lastRow = Sheets("Sheet1").Cells(Sheets("Sheet1").Rows.Count, 1).End(xlUp).row 

这将使您获得第1列中具有数据的最后一行数据


如果你有空白单元格,那么这可能会干扰你设置你的范围。 循环获取最终值也似乎非常低效。

C1中可能有一个空白,所以循环停止。 尝试这个

 LastRow = Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp).Row LastCol = 48