[[20180613113648]] 『ピボットテーブルの詳細内での並べ替え』(めび) ページの最後に飛ぶ

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

 

『ピボットテーブルの詳細内での並べ替え』(めび)

VBAは自動作成されたものを編集しながら使っているレベルの者です。

特定のデータを集計したピボットテーブルを活用しています。

ピボットテーブル内の数字をクリックすると、集計された数字を構成しているデータを表示するシートを自動作成してくれると思いますが、

・詳細シートの作成
・シート内の特定データを非表示化
・特定のデータでの並べ替え(今回はB列を希望)

をVBAで行おうとしています

詳細シートの作成は、特定の数字を選択してから
Selection.ShowDetail = True
を実行することで、

非表示化はアクティブシートにて編集することで、

解決したのですが、
その後の並べ替えができません。

色々調べたのですが、出力されるデータの数が不定であることもあり、
・自動作成してみると「ワークシート」や「テーブル」の指定が入ってしまい、それを省こうと、一般的なサンプルを編集したものを使うと、レンジ指定のsortメソッドが不正、等のエラーが起きてしまうこと

がネックになり、進まない状況です。

お力添え頂けたら幸いです。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


どんなコードで試してエラーになったのか提示いただけますか

(マナ) 2018/06/13(水) 18:06


テーブルを意識しないで並べ替えてはだめですか
 Option Explicit

  Sub test()
    Dim r As Range

    Set r = Cells(1).CurrentRegion
    r.Sort key1:=r.Columns(2), order1:=xlDescending, Header:=xlYes

 End Sub

(マナ) 2018/06/13(水) 18:36


>自動作成してみると「ワークシート」や「テーブル」の指定が入ってしまい

追加されたシートには、テーブルは1個しかないはずなので
ListObjects(1)で指定できるはずです。
なので、以下のようにするとエラーにならないと思います。

 Option Explicit

 Sub test2()
    Dim t As ListObject

    Set t = ActiveSheet.ListObjects(1)

    With t.Sort
        .SortFields.Clear
        .SortFields.Add Key:=t.HeaderRowRange(2), Order:=xlDescending
        .Apply
    End With

 End Sub

(マナ) 2018/06/13(水) 19:06


マナさま

曖昧な質問にも関わらず、ありがとうございます…! 無事できました!

相対的な指定方法を少しずつ覚えていければと思います…。

改めて、ありがとうございました!!!
(めび) 2018/06/14(木) 09:25


コメント返信:

[ 一覧(最新更新順) ]


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