【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?

マクロで、ピボットテーブルでの毎回可変するデータの最終行までの範囲を指定したいです。どなたかどうぞ教えてください。

列はU列までで固定です。
行が毎回異なります。
どのようにしたら、毎回異なる範囲を指定できますか?
マクロ初心者ですが、なんとか作業効率をUPさせたいと思っています。
どうぞよろしくお願い致します。
どこのマクロを直したらよいのかも教えてください。

自動作成されたVBAは以下の通りです。

Sub 実績集計ピポット()
'
' 実績集計ピポット Macro
'

'
Sheets("実績").Select
Cells.Select
Selection.Delete Shift:=xlUp
Sheets("管理表").Select
Range("A6").Select
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"管理表!R6C1:R28C21", Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="実績!R4C1", TableName:="ピボットテーブル1", DefaultVersion:= _
xlPivotTableVersion14
Sheets("実績").Select
Cells(4, 1).Select
With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("施工業者")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("ピボットテーブル1").AddDataField ActiveSheet.PivotTables( _
"ピボットテーブル1").PivotFields("現場名"), "データの個数 / 現場名", xlCount
With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("受注日")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("ピボットテーブル1").TableStyle2 = "PivotStyleMedium9"
ActiveSheet.PivotTables("ピボットテーブル1").ShowTableStyleRowStripes = True
ActiveSheet.PivotTables("ピボットテーブル1").ShowTableStyleColumnStripes = True
ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("受注日").AutoSort _
xlDescending, "受注日"
Range("A6").Select
Selection.Group Start:=True, End:=True, Periods:=Array(False, False, False, _
False, True, False, True)
ActiveWorkbook.ShowPivotTableFieldList = False
End Sub

ご教授お願いします。

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

  • A列のデータは空白が無いので、A列のデータが入った最終行までを範囲に指定したいです。

    ご教授お願いします。

      補足日時:2017/03/19 15:17

A 回答 (2件)

名前定義 可変領域 で検索してみてください。



EXCELではこういった増減する領域を扱うとき
名前定義はひとつのセオリーです。

VBAにおいても定義した領域を
Range(”定義した名前”)で使えますから
複雑に考える必要がないです。
    • good
    • 4
この回答へのお礼

yokomayaさま
いつも大変お世話になり、ありがとうございます。
報告が遅くなりましたが、検索のオートフィルターも教えていただいた通り、試したところ無事出来ました。
おかげさまで素敵な管理表を作成することが出来ました。
Range(”定義した名前”)ですね。
試してみます。

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

お礼日時:2017/03/19 21:46

次のコードを↓のようにすればいけると思います。



SourceData:="管理表!R6C1:R28C21"

SourceData:="管理表!A6:U" & Sheets("管理表").Cells(Rows.Count, "A").End(xlUp).Row

ちなみに、毎回、ピボットテーブルを新規作成するのですか?
一度、「データソースの変更」をマクロ記録してみることをお勧めします。たぶん、そっちの方が簡単だと思いますよ。
    • good
    • 3
この回答へのお礼

こんばんは。
ありがとうございました。
コード、ありがとうございました。試してみます。
「データーソースの変更」ですね。こちらも勉強させていただきます。
新たな知識が増えそうです。
感謝申し上げます。

お礼日時:2017/03/19 21:46

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

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


おすすめ情報

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