メインコンテンツへスキップ

Kutools for Office — 1つのスイート、5つのツールで、もっと多くのことを成し遂げましょう。

Excelで積み上げグループ化された縦棒/横棒チャートを作成するにはどうすればよいですか?

Author Xiaoyang Last modified

専門的なデータ分析において、単一のチャート内で複数のカテゴリやデータグループを視覚化することで、より明確な比較と効率的なデータ解釈が可能になります。一般的な要件としては、地域ごとや四半期ごとの売上値のように、積み上げられたデータとグループ化されたデータの組み合わせを表示することが挙げられます。この記事では、個々のカテゴリ値をグループ化された棒グラフとして比較しながら、各グループは積み上げられたセグメントで構成される「積み上げグループ化縦棒チャート」を作成する手順について説明します。このアプローチにより、グループ間および複数の変数にわたる強力な比較分析が可能です。以下にスクリーンショットを示します。

a screenshot showing a stacked clustered column chart in worksheet


Excelで積み上げグループ化縦棒チャートを作成する

Excelで積み上げグループ化縦棒チャートを作成する場合、まずExcelがこの種のチャートをネイティブでサポートしていないことを理解することが重要です。ただし、データを慎重に準備し、チャートレイアウトをカスタマイズすることで、その効果をシミュレートできます。

✅ まず知っておくべきこと:

  • Excelには「積み上げグループ化縦棒チャート」という組み込みのタイプはありません。結果は、データレイアウトの工夫によって作成されます。
  • クラスターグループをシミュレートするために、ソースデータを再構成する必要があります。
  • カテゴリグループ間には空白行が追加され、各クラスターが視覚的に分離されます。

複数四半期にわたる製品のサンプル売上データを使用して、ステップバイステップでプロセスを見ていきましょう。

1. 生データを整理する: この例では、列Aに製品名があり、隣接する列に売上データ(例: Q1およびQ2の実績対目標)があります。目標は、各製品のデータを並べてグループ化し、各クラスター内で実績/目標値を積み重ねて表示することです。

2. データを再構成する: 各グループのデータ(例: 各製品行)を新しいレイアウトにコピーし、各グループ間に空行を挿入する必要があります。これにより、Excelは各グループを積み上げ縦棒チャート内の別々のクラスターとして解釈します。

a screenshot of inserting blank row after each group of data and header row

3. チャートを作成する: 新しく構造化されたデータを選択します。次に、「挿入」→「縦棒または横棒チャート」→「積み上げ縦棒」に進みます。

a screenshot of selecting a Stacked Column under the Insert tab

4. シリーズを書式設定する: チャート内の任意の縦棒を右クリックし、「データ系列の書式設定」を選択します。

a screenshot of opening the Format Data Series dialog box

5. 間隔幅を縮小する: 「データ系列の書式設定」ウィンドウで、「系列オプション」に進み、間隔幅を0%に設定して、各グループを視覚的に一つの積み上げクラスターに圧縮します。

a screenshot of changing the Gap Width to 0 in the Format Data Series pane

6. 凡例とレイアウトを調整する: 凡例を右クリック → 「凡例の書式設定」を選択します。

a screenshot showing how to open the Format Legend pane in Excel

7. 凡例の位置を選択する: 「凡例の書式設定」ウィンドウで、「凡例オプション」の下にある適切な凡例位置(右、上、左、または下)を選択し、チャートレイアウトに最適でデータと重複しないようにします。

a screenshot of selecting the position for the legend

✅ 結果: 各製品の実績/目標データがグループ化され、積み上げられ、横に並べられた積み上げグループ化縦棒チャートが完成しました。これにより、迅速な比較が可能になります。

⚠️ 制限事項: この手法は小さなデータセットには有効ですが、大規模なデータセットや頻繁に変更されるデータの場合、手動での再構成はエラーが発生しやすくなります。以下のセクションでは、このプロセスを自動化するためのVBAおよび数式の解決策をご覧ください。


VBAコード – データの再構成とチャート生成の自動化

大規模なデータセットや頻繁に更新されるレポートを処理する場合、積み上げグループ化チャートを作成するためにデータを手動で再配置するのは面倒でエラーが発生しやすいです。VBA(Visual Basic for Applications)を使用すると、ソーステーブルの再構成からチャートの挿入まで、全体のプロセスを自動化でき、時間を節約し、作業を軽減できます。

この方法は、Excelマクロに精通しているユーザー、またはVBAが許可されている環境に最適です。特に、チャート構造が変わらず、データが定期的に更新される場合に効果的です。以下に実装方法を示します。

ステップ1: Alt + F11キーを押してVBAエディタを開きます。エディタで「挿入」→「モジュール」をクリックします。

ステップ2: 以下のVBAコードをモジュールウィンドウに貼り付けます。

Sub CreateStackedClusteredChart()
    Dim ws As Worksheet
    Dim rngData As Range
    Dim chartObj As ChartObject
    Dim chartRange As Range
    Dim xTitleId As String

    On Error Resume Next
    Set ws = ActiveSheet
    xTitleId = "KutoolsforExcel"

    ' Prompt user to select original data
    Set rngData = Application.InputBox("Select the original grouped data (including all headers):", xTitleId, Selection.Address, Type:=8)
    If rngData Is Nothing Then Exit Sub

    ' Create new worksheet for reshaped data
    Dim wsChartData As Worksheet
    Set wsChartData = Worksheets.Add
    wsChartData.Name = "ChartData_" & Format(Now(), "hhmmss")

    Dim numRows As Long, numCols As Long, i As Long, j As Long, outRow As Long
    numRows = rngData.Rows.Count
    numCols = rngData.Columns.Count
    outRow = 1

    ' Add headers
    wsChartData.Cells(outRow, 1).Value = "Category"
    For j = 2 To numCols
        wsChartData.Cells(outRow, j).Value = rngData.Cells(1, j).Value
    Next j
    outRow = outRow + 1

    ' Copy data and insert blank rows
    For i = 2 To numRows
        For j = 1 To numCols
            wsChartData.Cells(outRow, j).Value = rngData.Cells(i, j).Value
        Next j
        outRow = outRow + 1
        If i < numRows Then
            wsChartData.Cells(outRow, 1).Value = ""
            outRow = outRow + 1
        End If
    Next i

    ' Define chart data range
    Set chartRange = wsChartData.Range(wsChartData.Cells(1, 1), wsChartData.Cells(outRow - 1, numCols))

    ' Insert chart
    Set chartObj = wsChartData.ChartObjects.Add(Left:=100, Top:=30, Width:=500, Height:=350)
    With chartObj.Chart
        .SetSourceData Source:=chartRange
        .ChartType = xlColumnStacked
        .HasTitle = True
        .ChartTitle.Text = "Stacked Clustered Column Chart"
        .Legend.Position = xlLegendPositionRight
        .ChartGroups(1).GapWidth = 0
    End With

    MsgBox "Chart generated successfully.", vbInformation, "KutoolsforExcel"
End Sub

ステップ3: Alt + F8キーを押してマクロダイアログを開きます。「CreateStackedClusteredChart」を選択し、「実行」をクリックします。

ステップ4: 元のデータセット(ヘッダー付き)を選択するよう求められます。マクロは新しいワークシートに空行を挿入し、積み上げグループ化縦棒チャートを自動的に作成します。

📝 ヒント:

  • 元のテーブルの列ヘッダーやフォーマットが一貫していることを確認してください。
  • データセットが更新されるたびにマクロを再実行できます – 手動操作を繰り返す必要はありません。

✅ 利点: 時間の節約、正確なレイアウト、定期的なレポートに最適です。
⚠️ 欠点: マクロを有効にしたExcelとVBAの基本的な知識が必要です。


Excel関数 – 積み上げグループ化チャート用にデータを動的に再構成する

VBAを使用したくない場合や、生データの変更に伴ってチャートを動的に更新できるソリューションが必要な場合は、数式を使用してソースデータを積み上げグループ化チャートに適したレイアウトに再構成できます。INDEXTRANSPOSEなどの組み込み関数やヘルパー列を利用することで、最小限の労力で常に正しいチャート構造を提供するデータ変換エリアを設定できます。

このアプローチは、特に生データが定期的に更新される場合(新しい期間、カテゴリなど)に実用的であり、チャートを手動で再構成せずに自動的に調整したい場合に役立ちます。主な要件は、数式を利用してデータブロックや空白行を引き出し、整理する「ヘルパー」セクションを構築することです。これにより、チャートのソースは常に最新の状態を保ちます。

これがどのようにセットアップするかの一例です。

  • 元のデータがA1:D7A1が左上のヘッダー)にあると仮定し、列Aに地域/カテゴリがあり、列B、C、Dにサブカテゴリの値(例: Q1、Q2、Q3)があるとします。
  • 各カテゴリをクラスターとして表示し、Q値を積み上げ、クラスターを分離するために空白行を使用します。

1. 新しいシートまたは隣接エリアで、各グループを抽出し、空白行を挿入するためのヘルパーストラクチャを作成します。例えば、最初のデータ行をE2:G2にコピーします。

=INDEX($A$2:$D$7,INT((ROW()-2)/2)+1,COLUMN()-4+1)

必要な範囲までこの数式をドラッグします。グループ間の空白行を挿入するには、交互の行で空白("")を返すIF数式を設定します。

=IF(ISODD(ROW()), "", INDEX($A$2:$D$7,ROW()/2,COLUMN()-4+1))

これらの数式を慎重に構造化された参照と組み合わせて使用し、定期的な間隔で空白行を含む再構成されたデータを出力します。

2. 変換範囲が完了したら(積み上げとクラスターを含む)、この新しい範囲を選択し、前述のオリジナルの方法に従って積み上げ縦棒チャートを作成します(挿入積み上げ縦棒)。これで、チャートは元のデータ表に加えた変更を自動的に反映します。

大規模なデータセットの場合、抽出プロセスをより柔軟にするためにOFFSET関数を使用したり、チャートソースを定義するために動的名前範囲を適用することがしばしば役立ちます。

利点: VBAやマクロは不要、スクリプトが制限された環境に理想的です。
欠点: 大規模なデータには複雑な数式設定が必要、非常に大きな動的範囲ではパフォーマンスの低下が発生する可能性があります。

トラブルシューティング: チャートが正しく更新されない場合、ヘルパー数式での参照エラーや不一致を再度確認してください。空白行が正しく挿入されていることを確認してください。これらは「グループ化」された外観を達成する上で鍵となります。


関連するチャート記事:

  • Excelで別の棒グラフを重ねた棒グラフを作成する
  • 2つのデータ系列を持つグループ化された棒グラフまたは縦棒チャートを作成すると、2つのデータ系列の棒は横に並んで表示されます。しかし、時には2つのデータ系列をより明確に比較するために、オーバーレイまたは重ね合わせた棒グラフを使用したい場合があります。この記事では、Excelで重ね合わせた棒グラフを作成する方法について説明します。
  • Excelでステップチャートを作成する
  • ステップチャートは、不規則な間隔で発生する変化を示すために使用され、線グラフの拡張版です。ただし、Excelで直接作成する方法はありません。この記事では、Excelワークシートでステップチャートを段階的に作成する方法について説明します。
  • Excelでベルカーブチャートテンプレートを作成する
  • ベルカーブチャートは、統計学では正規確率分布と呼ばれ、通常は可能性のあるイベントを示すために使用され、ベルカーブの頂点は最も可能性の高いイベントを示します。この記事では、独自のデータを使用してベルカーブチャートを作成し、それをExcelのテンプレートとして保存する方法を説明します。
  • Excelで複数系列のバブルチャートを作成する
  • バブルチャートを迅速に作成するには、すべての系列を1つの系列として作成します(スクリーンショット1参照)。ここでは、Excelでスクリーンショット2に示すように、複数の系列を持つバブルチャートを作成する方法を紹介します。

  • スーパー数式バー(複数行のテキストや数式を簡単に編集可能); 閲覧レイアウト(多数のセルを簡単に読み取り・編集可能); フィルター範囲への貼り付け...
  • セル/行/列を結合してデータを保持; セル内容を分割; 重複する行を統合して合計/平均を計算... 重複セルを防止; 範囲を比較...
  • 重複または一意の行を選択空白行を選択(すべてのセルが空); スーパー検索および多くのワークブックでのあいまい検索; ランダム選択...
  • 数式参照を変更せずに複数のセルを正確にコピー; 複数のシートへの自動参照作成; 箇条書き、チェックボックスなどを挿入...
  • お気に入りの数式、範囲、グラフ、画像を素早く挿入; パスワードでセルを暗号化メーリングリストを作成してメールを送信...
  • テキストの抽出、テキストの追加、特定の位置の文字を削除、スペースを削除; ページング小計の作成と印刷; セルの内容とコメント間の変換...
  • スーパーフィルター(他のシートにフィルタースキームを保存して適用); 月/週/日ごとの高度な並べ替え、頻度など; 太字、斜体による特殊フィルタリング...
  • ワークブックとワークシートを統合; 主キーカラムに基づいてテーブルをマージ; データを複数のシートに分割xls、xlsx、PDFの一括変換...
  • ピボットテーブルのグループ化(週番号、曜日など)... ロックされたセルとロックされていないセルを異なる色で表示; 数式/名前を持つセルをハイライト...
kte tab 201905
  • Word、Excel、PowerPoint、Publisher、Access、Visio、Projectでタブ付き編集と閲覧を有効化します。
  • 新しいウィンドウではなく、同じウィンドウ内の新しいタブで複数のドキュメントを開き、作成します。
  • 生産性を50%向上させ、毎日数百回のマウスクリックを削減します!
officetab bottom