1

ピボット テーブルを作成するためのマクロを作成しようとしています。シート上のすべてのデータを選択するには、マクロが必要です。私の友人が上記のコードの作成を手伝ってくれましたが、マクロはデータの 48 列すべてではなく、最初の 2 列のみを選択します。私たちが犯したかもしれない間違いを見た人はいますか?どんな反応でも大歓迎です!常に 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)
4

2 に答える 2

0

データの最後の列を取得するには、置き換えてみてください

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

為に

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

これにより、行 1 にデータがある右側の最後の列が取得されます。

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

為に

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

これにより、列1にデータがあるデータの最後の行が取得されます


空白のセルがある場合、範囲の設定に干渉している可能性があります。終了値を取得するためのループも非常に効率が悪いようです。

于 2013-11-11T17:41:31.770 に答える
0

C1 に空白がある可能性が高いため、ループが停止しています。これを試して

LastRow = Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp).Row
LastCol = 48
于 2013-11-11T17:18:26.813 に答える