[[20210205161849]] 『VBAでピボットテーブル 2』(みけ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAでピボットテーブル 2』(みけ)

先日こちらで教えて頂いたばかりですが、
ピボットテーブルの別の事で教えて頂きたく新たに書き込ませてもらいました。

ピボットテーブルアイテムで【地域】について
データが無い地域が含まれていても(ない場合は飛び越して)
順番通りに並べる方法を教えてください。
地域の数は決まっていてそのデータによって含まれない場合もあり
並び順は決まった順で並べたいのです。
(その都度ポジション番号を付けなくて良いようにしたい)

フィールドのポジションを並べてみても
データが無い地域の場所で
「 pivot Fileld クラスの pivot Items プロパティを取得できません」と
表示が出てしまい止まってしまいます。

コードは下記のとおりです。

Sub shukei()

    Dim ws As Worksheet
    Dim src As Range
    Dim dst As Range
    Dim pvc As PivotCache
    Dim pvt As PivotTable

    Set src = Worksheets("元データ").Range("A1", Cells(Rows.Count, 1).End(xlUp)).Resize(, 3)
    Set ws = Sheets.Add
    ws.Name = "集計"
    Set dst = ws.Range("A3")

    Set pvc = ActiveWorkbook.PivotCaches.Create( _
                        xlDatabase, src.Address(, , xlR1C1, True))
    Set pvt = pvc.CreatePivotTable(dst)
                     pvt.RowAxisLayout xlTabularRow   

    With pvt.PivotFields("地域")
        .Orientation = xlRowField
        .PivotItems("東京").Position = 1
        .PivotItems("横浜").Position = 2
        .PivotItems("千葉").Position = 3
        .PivotItems("埼玉").Position = 4
     .PivotItems("茨城").Position = 5
        .PivotItems("栃木").Position = 6
        .PivotItems("群馬").Position = 7
    End With

    With pvt.PivotFields("品目")
        .Orientation = xlRowField
        .PivotItems("A").Position = 1
        .PivotItems("B").Position = 2
        .PivotItems("C").Position = 3
    End With

    pvt.AddDataField pvt.PivotFields("金額"), "件数", xlCount
    pvt.AddDataField pvt.PivotFields("金額"), "代金", xlSum
    pvt.TableStyle2 = "PivotStyleMedium13"

        Columns("A:A").ColumnWidth = 8
        Columns("B:B").ColumnWidth = 6
        Columns("B:B").NumberFormatLocal = "#,##0"
        Columns("C:C").ColumnWidth = 10
        Columns("C:C").NumberFormatLocal = "#,##0"

 End Sub

< 使用 Excel:Excel2016、使用 OS:Windows10 >


マクロで、順番を指定しないで
ユーザー設定リストに基づいて並べ替えるとよいと思います。

(マナ) 2021/02/05(金) 16:47


マナ 様
今回も有難うございます。
「ユーザー設定リスト」という機能を知りませんでした。
調べてみます。
有難うございました。
(みけ) 2021/02/05(金) 17:11

検索ですぐ見つかると思いますが
https://hamachan.info/win8/excel/narabi.html

(マナ) 2021/02/05(金) 19:20


On Error Resume Nextで、エラーは無視させ
優先順位低い順に、すべてPosition = 1に並べ替えていけば大丈夫そうです。
こんな感じです。

        On Error Resume Next
        .PivotItems("埼玉").Position = 1
        .PivotItems("千葉").Position = 1
        .PivotItems("横浜").Position = 1
        .PivotItems("東京").Position = 1
        On Error GoTo 0

(マナ) 2021/02/06(土) 19:06


マナ様

ご丁寧に有難うございました。
VBAにユーザー設定も組み込みたくて検索しましたが、
私には難し過ぎました。

同じ動作がこのような簡潔なコードでできるんですね。
思い通りの資料ができました。

有難うございました。

(みけ) 2021/02/08(月) 09:39


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.