- ベストアンサー
EXEL 行,列の並び順を変えないピボットテーブルの作り方
- EXELで行と列の順序を変えずにピボットテーブルを作成する方法について教えてください。
- 通常のピボットテーブルでは、行と列の順序が自動的に並び替えられますが、元の表の行と列の順序を保ったままピボットテーブルを作成したいです。
- ユーザー設定リストでは指定する順序が文字列ではないため、ピボットテーブルに拘らず他の方法でも構いません。どなたか詳しい方、アドバイスをお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! ピボットテーブルではなく、Sheet1のデータをSheet2に表示するようにしています。 作業用の列を設ければ関数でできると思いますが、 VBAでやってみました。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, j As Long, cnt As Long, c As Range, wS1 As Worksheet, wS2 As Worksheet Set wS1 = Worksheets("Sheet1") Set wS2 = Worksheets("Sheet2") Application.ScreenUpdating = False wS2.Cells.ClearContents wS1.Range("A:A").Copy wS2.Cells(1, 1) cnt = 1 For i = 2 To wS1.Cells(Rows.Count, 2).End(xlUp).Row Set c = wS2.Range("1:1").Find(what:=wS1.Cells(i, 2), LookIn:=xlValues, lookat:=xlWhole) If c Is Nothing Then cnt = cnt + 1 wS2.Cells(1, cnt) = wS1.Cells(i, 2) End If Next i For i = 2 To wS1.Cells(Rows.Count, 2).End(xlUp).Row j = WorksheetFunction.Match(wS1.Cells(i, 2), wS2.Range("1:1"), False) wS2.Cells(i, j) = wS1.Cells(i, 1) Next i Application.ScreenUpdating = True End Sub 'この行まで ※ 関数でないので、Sheet1のデータ変更があるたびにマクロを実行する必要があります。m(_ _)m
お礼
VBAまで書いていただいて、恐縮です。 この方法も今後のために実行して、身につけたいと思います。 すばやいご回答、本当にありがとうございました。
お礼
サイドナンバーですか!その手があったんですね。 D列の関数も教えていただいて、助かりました。 早速実行してみます。 本当にありがとうございました。