TOP

アンピボットテーブル (Unpivot)

説明

概要表 (pivot tables) はデータ分析における強力なツールです。ただし、場合によってはデプロイする必要があります。 (unpivo) 集計されたデータ (データの「直線化」またはデータの折りたたみ解除とも呼ばれます) を通常の表形式に変換し、類似したすべての値が同じ列に収まるようにします。これは、たとえば、新規または変更されたグラフやレポートを作成する場合に必要です。

この変換は、Power Query ツールを使用して Excel で実行できますが、高速ではなく、あまり便利ではありません。 Power Query を使用せずに概要データを展開する別のアプローチを試してみましょう。


問題の定式化

一部のデータ セットをピボット テーブルからフラット テーブル (Unpivot) に変換する必要があると想像してください。

このようなタスクは、マクロを使用するとより適切に解決されます。データを含むクロス テーブル (クロス テーブル) を通常の (フラット) テーブル形式に変換できる独自のプロシージャを作成してみましょう。これにより、再び可能になります。 要約テーブルを作成する データが変更または追加されたもの。

UnPivotTable プロシージャの VBA コード

エディタを開く ビジュアル ベーシック ( サービス - マクロ - エディター Visual Basic )、 新しいモジュールを挿入します (Insert - Module) このマクロのテキストをそこにコピーします。

Sub UnPivotTable()
  'moonexcel.com.ua
  Dim InVal    As Variant
  Dim OutVal() As Variant
  Dim j, k, i  As Long
  Dim NewSheet
  
  i = 1
  InVal = Selection.Formula
  ReDim OutVal(1 To Selection.Count, 1 To 3)
  
  For j = 2 To UBound(InVal, 1)
    For k = 2 To UBound(InVal, 2)
      If InVal(j, k) <> "" Then
        OutVal(i, 1) = InVal(j, 1)
        OutVal(i, 2) = InVal(1, k)
        OutVal(i, 3) = InVal(j, k)
        i = i + 1
      End If
    Next k
  Next j
  
  Set NewSheet = Worksheets.Add
  NewSheet.Range("A1").Resize(UBound(OutVal, 1), 3).Value = OutVal
End Sub 

その後、VBA エディターを閉じ、Excel に戻り、ソース テーブル (ヘッダーと最初の列に国が含まれる完全なテーブル) を選択し、メニューからマクロを実行します。 サービス - マクロ - マクロ (Tools - Macro - Macros) (ALT+F8)

マクロは新しいシートをワークブックに挿入し、その上に選択したテーブルの新しい再構築バージョンを作成します。大きなテーブルを処理および分析するための Excel ツールの武器全体を使用して、このようなテーブルを「完全なプログラムで」操作できます。

関連記事: