スプレッドシートのセル結合をやめて「中央揃え」にする方法|結合が引き起こす3つのトラブルと代替策

スポンサーリンク

「見出しの行をきれいに見せたい」「部署名を中央に揃えたい」――そんなとき、スプレッドシートのセル結合をつい使っていませんか。

ボタン一つで表が整うので、申請書や進捗一覧表を作るときに便利ですよね。

ところが結合した表を使い込むほど、トラブルが増えてきます。フィルターで絞り込めない、並べ替えるとエラーが出る、GASで値が取れない、といった不具合が次々に起きるのです。

総務省も2020年に、統計表の作成ルールでセル結合の使用を「推奨しない」と明言しました。

この記事では、スプレッドシートのセル結合が引き起こす3つのトラブルを整理します。そのうえで結合せずに見た目を整える「中央揃え」の方法を、操作手順つきで解説します。

最後に既存ファイルの結合を一括解除する手順と、解除後のデータを整えるテクニックも紹介しますね。これを機にセル結合を卒業していきましょう。

  1. なぜスプレッドシートのセル結合は問題なのか
    1. 結合セルは「左上だけが値を持つ」
    2. 総務省も「機械判読できない」と指摘している
    3. スプレッドシート特有の3種類の結合
  2. トラブル1|フィルターで先頭行しかヒットしない
    1. 結合した部署列はフィルターで空白扱いになる
    2. FILTER関数を使っても同じことが起きる
  3. トラブル2|並べ替えで「結合セルのサイズが同じでない」エラー
    1. 並べ替え時に表示されるエラーメッセージ
    2. なぜ並べ替えできないのか
    3. フィルターのソート機能でも同じ現象が起きる
  4. トラブル3|GASやQUERY・ARRAYFORMULAで値が取れない
    1. GASのgetValue()は空白を返す
    2. QUERY関数で集計すると結合の影響を受ける
    3. ARRAYFORMULAでも同じ問題が発生する
  5. 結合をやめて「水平方向の配置→中央」で見た目を整える方法
    1. 「水平方向の配置→中央」の操作手順
    2. ExcelとGoogleスプレッドシートの違い
    3. 列幅を調整して見出しを整える
  6. 既存ファイルのセル結合を一括解除する手順
    1. シート全体の結合を一括解除する
    2. 解除すると空白セルが大量に出現する
    3. 部分的に解除したいときの操作
  7. 結合解除後にデータを整える3つのテクニック
    1. テクニック1|数式コピーで空白セルを上の値で埋める
    2. テクニック2|ARRAYFORMULAで空白を埋める
    3. テクニック3|GASで空白を埋める
    4. おまけ|条件付き書式で「結合っぽく」見せる
  8. それでも結合を使ってよい3つの場面
    1. 場面1|印刷専用の出力テーブル
    2. 場面2|タイトル行や注釈領域
    3. 場面3|セル幅で収まらない注釈やアラート
  9. まとめ|セル結合をやめるとデータが資産になる

なぜスプレッドシートのセル結合は問題なのか

スプレッドシートのセル結合は「見た目をきれいにする機能」と思われがちです。しかし内部の動きを見ると、データとしてはかなり扱いにくい状態が作られます。

まずは結合セルの正体と、なぜ官公庁までもが使用を控えるよう呼びかけているのかを押さえておきましょう。

結合セルは「左上だけが値を持つ」

2つ以上のセルを結合すると、見た目では大きな1つのセルに見えます。

しかしスプレッドシートの内部では「左上のセルだけが値を持ち、残りは空白」という扱いになっています。

たとえばA2〜A4を結合して「営業部」と入力した場合、スプレッドシートが認識しているデータはこうです。

セル内部の値
A2営業部
A3(空白)
A4(空白)

見た目は1つのセルでも、データ的には「営業部」と「空白2つ」の3レコードです。

この食い違いが、後ほど紹介するフィルター・並べ替え・GAS・関数のすべてで、トラブルの引き金になります。

総務省も「機械判読できない」と指摘している

行政の世界でもこの問題は早くから認識されていました。

総務省は2020年12月、「統計表における機械判読可能なデータの表記方法の統一ルール」を策定しました。そのなかでセル結合の使用を控えるよう明記しています。

理由はシンプルで、結合されたデータをCSVに書き出した瞬間に構造が崩れるからです。BIツール(Looker Studio)やGAS、Pythonに渡しても正常に動きません。結合の2行目以降が「空白」と判定され、自動処理がすべて誤動作してしまうのです。

「自分は分析ツールなんて使わない」と思うかもしれません。しかしスプレッドシートのデータをChatGPTやGeminiに貼り付けて要約や分析を頼む場面は、これから増えていきますよ。

セル結合を続けていると、これからの「AIに任せる仕事」のスタートラインに立てなくなってしまうのです。

スプレッドシート特有の3種類の結合

スプレッドシートには結合の種類が3つあります。

  • すべて結合: 縦横ともに1つのセルに統合
  • 水平方向に結合: 行ごとに横方向だけ結合
  • 垂直方向に結合: 列ごとに縦方向だけ結合

どの種類で結合しても、内部のデータ構造は同じです。左上のセルだけが値を持ち、残りは空白になります。

「縦の結合だけだから大丈夫」「横の結合だから影響ない」ということはありません。どれを選んでも同じトラブルに巻き込まれますよ。

トラブル1|フィルターで先頭行しかヒットしない

スプレッドシートでセル結合をしていて最初にぶつかるのが、フィルター機能の不具合です。

「営業部」だけを絞り込みたいのに、なぜか先頭の1行しか表示されない、という現象が起こります。

結合した部署列はフィルターで空白扱いになる

スプレッドシートのフィルター機能は、1行ごとにセルの値を見て表示・非表示を判定します。

結合の2行目以降は空白なので、「営業部」というフィルター条件にマッチしません。そのため非表示になってしまうのです。

具体的に、こんなデータがあるとイメージしてください。

部署(結合あり)氏名売上
営業部山田100
(結合のため空白)鈴木80
(結合のため空白)佐藤95
総務部田中70
(結合のため空白)渡辺60

ここでフィルターを使って「営業部」を選択すると、表示されるのは1行目(山田)だけです。鈴木・佐藤は空白セルなので「営業部」に該当しないとみなされ、消えてしまいます。

絞り込みたい本人にとっては「山田1人しか営業部にいないの?」という、想定外の結果になります。

FILTER関数を使っても同じことが起きる

スプレッドシートには FILTER関数 という便利な関数があります。しかし結合セルが含まれている範囲を渡すと、同じ問題が起きます。

たとえば =FILTER(A2:C10, A2:A10="営業部") のような書き方で、「営業部の行だけ抜き出す」処理を書いたとしますね。それでも、結合の2行目以降は空白判定されて取れません。

つまりUIの「データ > フィルタを作成」だけでなく、関数で書いた絞り込みでも同じトラブルにぶつかるのです。

トラブル2|並べ替えで「結合セルのサイズが同じでない」エラー

2つめの大きなトラブルは、並べ替え機能が動かなくなることです。

部署別に並べ替えたい、売上順に並べ替えたい――そういうときに、結合セルがあるとエラーで止まってしまいます。

並べ替え時に表示されるエラーメッセージ

結合セルを含む範囲を選択して「データ > 範囲を並べ替え」を実行すると、こんなエラーが表示されます。

並べ替える対象セルのサイズがすべて同じである必要があります

このエラーが出ると、並べ替えが一切実行できません。範囲を狭めて、結合のない列だけ並べ替えるしかない状態になります。

なぜ並べ替えできないのか

並べ替えは「行を入れ替える」処理です。

ところが結合セルがあると、結合の途中で行を分割できません。入れ替えると見た目が壊れてしまうのです。

たとえば「営業部」で結合された3行のうち、1行目だけを売上トップとして上に移動させたとします。すると「営業部」のラベルが宙に浮いてしまうわけです。

スプレッドシートはこの矛盾を避けるためにエラーで止めます。しかしユーザーから見ると「なんで並べ替えできないの?」というフラストレーションになりますよね。

フィルターのソート機能でも同じ現象が起きる

データ > フィルタを作成で並べ替えようとしても、結合がある列の▼アイコンから「A → Z」を選ぶと同じエラーが出ます。

UIから並べ替えるルートはすべて結合の影響を受けます。結局のところ、結合を解除しないと並べ替えはできない、という結論になります。

トラブル3|GASやQUERY・ARRAYFORMULAで値が取れない

3つめは、関数やGASで値が取れなくなるトラブルです。

スプレッドシートは関数・GAS・外部APIで自動化しやすいのが強みです。しかし結合セルがあると、これらすべてが正しく動かなくなります。

GASのgetValue()は空白を返す

Google Apps Script で結合セルから値を取得しようとすると、左上以外のセルは空文字を返します。

const sheet = SpreadsheetApp.getActiveSheet();
Logger.log(sheet.getRange("A2").getValue()); // "営業部"
Logger.log(sheet.getRange("A3").getValue()); // ""
Logger.log(sheet.getRange("A4").getValue()); // ""

A2〜A4を結合して「営業部」と入力している場合、A2は値を返しますが、A3とA4は空文字です。

GASで一括処理を書くとき、たとえば「部署列が空白でない行だけ取得」というコードを書いたとします。すると結合の2行目以降が漏れてしまいます。

QUERY関数で集計すると結合の影響を受ける

スプレッドシート定番の QUERY関数 も、結合セルの2行目以降を空白として扱います。

たとえば部署別の合計売上を出すQUERYを書いたとします。

=QUERY(A2:C10, "select A, sum(C) where A is not null group by A")

結合された「営業部」エリアは、A2の1行だけが営業部としてカウントされます。A3とA4の鈴木・佐藤の売上は「空白」グループに集計されてしまうわけです。

意図と違う集計結果が出るのに、エラーは出ないので発見しづらいのが厄介ですよ。

ARRAYFORMULAでも同じ問題が発生する

ARRAYFORMULA で配列処理を書く場合も、結合範囲の2行目以降は空白として処理されます。

=ARRAYFORMULA(IF(A2:A10="営業部", C2:C10, 0))

このような書き方で「営業部だけ売上を抽出」したくても、結合のA3・A4は条件に合致しないため0が返ります。

ピボットテーブルでも同じ現象が起きます。結合の2行目以降が「空白」というカテゴリに集約されてしまい、意図しない集計結果が出てしまうのです。

結合をやめて「水平方向の配置→中央」で見た目を整える方法

ここまで読んで「じゃあ見出しはどう見せればいいの?」と思いますよね。

実はスプレッドシートには、結合せずに見た目を整える「中央揃え」という機能があります。

「水平方向の配置→中央」の操作手順

スプレッドシートで結合の代わりに使うのが、ツールバーの「水平方向の配置」アイコンです。

手順はこうです。

  1. 中央揃えしたいセル(または範囲)を選択する
  2. ツールバーの「水平方向の配置」アイコンをクリックする
  3. メニューから「中央」を選ぶ

!_images/spreadsheet-cell-merge-center-alignment/01_ui_center-alignment-menu.png

これで結合せずに、セルの中身が中央寄せになります。

ショートカットを使うなら Ctrl+Shift+E(macOSは Cmd+Shift+E)で中央揃えが一発で適用されます。覚えておくと便利ですよ。

ExcelとGoogleスプレッドシートの違い

Excel には「選択範囲内で中央」という、結合せずに複数セルにまたがって見た目だけ中央に寄せる機能があります。

しかし スプレッドシートには「選択範囲内で中央」そのものは存在しません

そのため、スプレッドシートで「複数列にまたがって中央寄せに見せたい」場合は、次のように工夫します。

  • 見出し用の行はセル幅を広げ、隣接セルを空のままにする
  • メインのセルだけに値を入れて、中央揃えを適用する
  • 視覚的に「広いセルに中央寄せ」のように見える

これでデータ構造を壊さず、見た目の「中央揃え感」を再現できます。

列幅を調整して見出しを整える

もう一つ便利なのが、列幅の調整です。

見出しを目立たせたい場合は、見出しの列だけを広く取り、本文の列をそれより狭くすると、視覚的なバランスが取れます。

「結合しないと中央揃えにできない」と思い込みがちです。しかし列幅・配置・フォントサイズの組み合わせで十分整った表が作れますよ。

既存ファイルのセル結合を一括解除する手順

ここまで読んで「過去のファイルにも結合がたくさん入っているけど、どうしたら?」と思った方もいるはず。

そういうときは、シート全体を選択して結合を一括解除するのが最速です。

シート全体の結合を一括解除する

手順はこうです。

  1. シートの左上の四角(行番号と列番号が交わる角)をクリックして、シート全体を選択する
  2. ツールバーの「セルを結合」アイコンをクリックする
  3. アイコンが解除状態に切り替わり、すべての結合が解除される
02 ui unmerge all sheet

これでシート内のすべての結合が、一度に解除できます。

ショートカットを使うなら、まず Ctrl+A(macOSは Cmd+A)でシート全体を選択します。そのうえで「セルを結合」アイコンを押す流れになりますよ。

解除すると空白セルが大量に出現する

結合を解除した直後は、結合範囲の2行目以降が空白になっています。

たとえばA2〜A4で「営業部」と結合していた場合、解除するとA2に「営業部」、A3とA4が空白という状態に戻ります。

このままだとフィルター・並べ替え・QUERY のすべてが空白行を「該当なし」として扱います。そのため次のステップで空白を埋める必要があります。

部分的に解除したいときの操作

シート全体ではなく、一部の範囲だけ結合を解除したいときは、結合された範囲をドラッグで選択してから「セルを結合」アイコンを押せばOKです。

GASで一括解除するなら、こんなコードで全シートの結合を解除できます。

function unmergeAll() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getDataRange();
  range.breakApart();
}

breakApart() メソッドは指定範囲のすべての結合を解除する関数です。大量のシートを一気に処理したいときに便利ですよ。

結合解除後にデータを整える3つのテクニック

結合を解除しただけでは、2行目以降が空白のままです。

この空白を埋めて、フィルター・QUERY・ARRAYFORMULAで正しく処理できる状態に整えていきましょう。

テクニック1|数式コピーで空白セルを上の値で埋める

最も基本的な方法が、空白セルに上のセルの値をコピーすることです。

手順はこうです。

  1. A3セルに =A2(上のセル参照)を入力する
  2. A3セルを選択した状態で、必要な範囲(A100まで等)までフィルダウンする
  3. 値だけ残したい場合は、範囲を選択して「コピー」→「特殊貼り付け」→「値のみ貼り付け」を実行

たった3ステップで、空白セルがすべて埋まります。フィルダウンはセルの右下の四角(フィルハンドル)をダブルクリックすると、隣接列の最終行まで一気に適用されますよ。

テクニック2|ARRAYFORMULAで空白を埋める

=ARRAYFORMULA を使って、空白セルに上の値を引き継ぐ別列を作る方法です。

別の列(たとえばE列)に、次の数式を入れます。

=ARRAYFORMULA(IF(A2:A100="", LOOKUP(ROW(A2:A100), IF(A2:A100<>"", ROW(A2:A100)), A2:A100), A2:A100))

この式は「A列の空白セルには直前の値を、それ以外はA列の値をそのまま返す」という処理です。

少し複雑ですが、運用上は補完用の列をE列に作っておくと整理しやすいです。QUERYやピボットからはE列を参照する形にすれば、管理が楽になりますよ。

テクニック3|GASで空白を埋める

GASで一括補完する場合のコードはこうです。

function fillDownBlanks() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getRange("A2:A100");
  const values = range.getValues();
  let lastValue = "";
  for (let i = 0; i < values.length; i++) {
    if (values[i][0] === "") {
      values[i][0] = lastValue;
    } else {
      lastValue = values[i][0];
    }
  }
  range.setValues(values);
}

このコードを実行すると、A列の空白セルに直前の値が自動で入ります。

セル結合を解除した直後にこのスクリプトを走らせると、データの整形が一瞬で終わりますよ。

おまけ|条件付き書式で「結合っぽく」見せる

「やっぱり見た目は結合っぽくしたい」というときは、条件付き書式で工夫する方法もあります。

A列の値が直前のセルと同じなら、文字色を白にして見えなくするルールを設定します。

  1. A2:A100を選択
  2. 「表示形式 > 条件付き書式」を開く
  3. 「カスタム数式」を選び、=A2=A1 を入力
  4. 書式設定で文字色を白に設定

!_images/spreadsheet-cell-merge-center-alignment/03_ui_conditional-format-dialog.png

これでデータは正常に入っているのに、画面上は「営業部」が3行のうち1行だけに見える状態になります。

データ構造を壊さずに「結合っぽい見た目」を作れるので、印刷用にも使える便利なテクニックですよ。

それでも結合を使ってよい3つの場面

ここまで「結合をやめよう」と書いてきましたが、絶対禁止というわけではありません。

次の3つの場面では、結合を使っても問題ないですよ。

場面1|印刷専用の出力テーブル

請求書や見積書、申請書のように「印刷して提出するだけで、データとしては使わない」シートでは、結合を使っても問題ありません。

並べ替えもフィルターもしないので、結合のデメリットが発動しないからです。

ただし「印刷専用シート」と「データ入力シート」を明確に分けてください。結合は印刷専用のほうにだけ入れるのがコツです。

場面2|タイトル行や注釈領域

シートの最上部に置く「2026年5月 売上レポート」のようなタイトル行は、データ範囲とは別なので結合してOKです。

データ集計対象になるテーブル(A4から始まる本体テーブル)には結合を入れません。A1〜D1のタイトル行だけ結合する、というふうに使い分けますよ。

場面3|セル幅で収まらない注釈やアラート

「このシートは2026年5月時点のデータです。最新版は別シートを参照」のような長文の注釈を、複数セルにまたがって表示したい場合も結合が便利です。

これも本体のデータ範囲とは無関係なので、影響は出ません。

要するに「データ処理の対象になる範囲では結合を使わない」というルールを守りましょう。印刷やタイトル領域では自由に結合しても大丈夫ですよ。

まとめ|セル結合をやめるとデータが資産になる

スプレッドシートのセル結合が引き起こす3つのトラブルと、結合せずに整える「中央揃え」の方法を解説しました。

ポイントを振り返ります。

トラブル影響
トラブル1|フィルター結合の先頭行しかヒットしない
トラブル2|並べ替え「結合セルのサイズが同じでない」エラー
トラブル3|GAS・QUERY・ARRAYFORMULA結合の2行目以降が空白扱いになる

代わりに使うべき機能はこうです。

  • 見た目を整える: 「水平方向の配置→中央」(Ctrl+Shift+E / Cmd+Shift+E)
  • 既存の結合解除: シート全体を選択して「セルを結合」アイコンをトグル
  • 解除後のデータ整形: 数式コピー、ARRAYFORMULA、GAS の3パターン

セル結合をやめると、スプレッドシートのデータが QUERY関数ARRAYFORMULAピボットテーブル で素直に扱えるようになりますよ。

「見た目をきれいにすること」と「データとして使えること」は両立できます。今日からセル結合を卒業して、データを資産として使える状態に整えていきましょう。

Excel版で同じテーマを扱った Excelでセル結合を使ってはいけない理由と代替方法3選 もあわせて読むと、Excelとスプレッドシートそれぞれのベストプラクティスをまとめて理解できますよ。

タイトルとURLをコピーしました