Apple IDログイン機能メンテナンスのお知らせ

Excel VBA ピボットテーブルにおいて、行数の増減がある為、 最終行を取得した
VBAコードを書きたいのですが、トライしましたがうまくいきません
、どこをどのように直せばよいものなのか教えてください。


Sub PivotTable()
Dim DataS As Worksheet 'データシート
Dim PivotS As Worksheet 'ピボットテーブルを作成するシート
Dim PCache As PivotCache 'ピボットキャッシュ用変数
Set DataS = ThisWorkbook.Worksheets("マッチングデーター")

'『データ』シートからピボットキャッシュを作成
Set PCache = ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=DataS.Range("M1:N19"))

'『ピボットテーブル』シートを追加
Worksheets.Add
ActiveSheet.Name = "ピボットテーブル"
Set PivotS = ThisWorkbook.Worksheets("ピボットテーブル")

'『ピボットテーブル』シートにピボットテーブル作成
PCache.CreatePivotTable _
TableDestination:=PivotS.Range("A1"), _
TableName:="個数"


宜しくお願いします。

質問者からの補足コメント

  • 回答ありがとうございました。
    M・N列の行数が必ず同じです。
    SourceData:=DataS.Range("M1:N" & Cells(Rows.Count, 13).End(xlUp).Row))と
    したのですが、添付画像のエラーとなってしまします。
    すみませんが、ご教授願います。

    宜しくお願い致します。

    「Excel VBA ピボットテーブルにて」の補足画像1
    No.1の回答に寄せられた補足コメントです。 補足日時:2020/01/18 13:25
  • 早々の対応ありがとうございます。
    添付画像の通り、データーは入っているのですが、なぜエラーになるのかが分かりません。
    ご教授願います
    すみません。

    「Excel VBA ピボットテーブルにて」の補足画像2
      補足日時:2020/01/18 14:45

A 回答 (4件)

よく見たらデータシートがアクティブではないのですね?以下のように指定したらいかがですか?



SourceData:=DataS.Range("M1:N" & DataS.Cells(Rows.Count, 13).End(xlUp).Row))
    • good
    • 0
この回答へのお礼

対応ありがとうございました。
うまくいきました。
もうすこし勉強していきます。

本当にありがとうございました。

お礼日時:2020/01/18 15:20

エラーする行の前に以下をいれたら、なんて数字が出ますか?


MsgBox (Cells(Rows.Count, 13).End(xlUp).Row)
    • good
    • 0

エラーメッセージを見るとM列にデータが無いか1つだけという事ですが、違いますか?


「データが無いまたは1つだけの時はピボットテーブルは不要です」という事だと思います。
    • good
    • 0

「SourceData:=DataS.Range("M1:N19"))」を見る限りMまたはN列の行数が対象になると思います。

M・N列の行数が必ず同じならどちらの最終行を用いても良いと思いますが、実際はどうなのでしょうか?
同じまたはM列の方が長いのならば「SourceData:=DataS.Range("M1:N" & Cells(Rows.Count, 13).End(xlUp).Row))」にされれば良いと思います。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A