ごすけです。
今日は、先日お客様のスプレッドシート開発で実際に遭遇した「結合セルのズレ問題」と、その解決方法をご紹介します。
私ココナラでスプシのテンプレ開発を承っているのですが、お客様から「結合したセルにデータが上手く反映されない」と質問をいただきました。
2行のセルを結合したところにデータを反映させたいというご要望です。
元のデータは結合されていないフラットな状態で管理されているのですが、それを見やすく表示するために結合セルに落とし込みたい、というわけです。
最初は単純に考えて、={A2:A11} のように範囲指定してデータを参照させればいいかなと思ったんです。
でも、ここで問題が発生しました。
結合セルは2行として認識されるんですね。

つまり、フラットなデータをそのまま結合セルの範囲に流し込もうとすると、1つのデータが2行分の領域に対して入ってしまい、次のデータとの間に空白ができない。
結果として、データが詰まってしまって2行飛ばしにならないんです。
「じゃあ、データとデータの間に空白を入れたいんだけど、どうしたもんか…」
そう悩んでいた時に思いついたのが、FLATTEN関数を使った方法でしたので紹介したいと思います。
- 結合セルにデータを反映させる際のズレ問題とその原因
- FLATTEN関数を使った結合セルのズレ解消方法
- TRANSPOSE関数との組み合わせによる応用テクニック

FLATTEN関数で解決
解決方法はとてもシンプルです。
元データの隣に空白の列を用意します。データ列が1列、空白列が1列という感じです。

この2列をまとめてFLATTEN関数で処理します。
=FLATTEN(A2:B11)
A列にデータ、B列に空白を用意しておくと、FLATTEN関数が「データ、空白、データ、空白…」という一次元配列に変換してくれます。
これで、結合セル(2行分)に対して、データが1個飛ばしで自然に配置されるようになったんです。
空白列の数を調整すれば:
- 空白列1列 → 1個飛ばし(2行ごとにデータ)
- 空白列2列 → 2個飛ばし(3行ごとにデータ)
というように、柔軟に対応できます。
応用編:横軸に展開したい場合
さらに、「縦じゃなくて横に展開したい」という場合もありますよね。
そんな時は、TRANSPOSE関数と組み合わせるだけでOKです。
=TRANSPOSE(FLATTEN(A2:B11))FLATTENで一次元化したデータをTRANSPOSEで転置すれば、横軸に2列飛ばしでデータを配置できます。
縦横どちらの方向でも、結合セルに対応したデータ配置が可能になります。

まとめ:結合セル問題の実践的解決法
「結合するとズレる」を解消するFLATTEN関数の活用方法について解説しました。
- 結合セルは複数行(列)として認識される
- FLATTEN × 空白列(行)で間隔を作り出せる
- TRANSPOSEと組み合わせれば横展開も可能
今回の開発で学んだことは、結合セルがある場合は「結合セルのズレ問題は、データ側に空白を作ることで解決できる」ということです。
この方法を知っているだけで、「結合するとズレる」という悩みから解放され、お客様のご要望にもスマートに応えられるようになります。
正直に言うと、私は普段あまりスプレッドシートで結合セルを使いません。
データベースとして扱う時に結合するとズレが生じたり、GASで処理する際もかなり面倒になるからです。
でも印刷時の見た目を整えたり、お客様への納品物として見やすくするためには、結合セルがどうしても必要な場面もあります。
今回ご紹介した方法が、同じように結合セルで悩んでいる方の助けになれば嬉しいです。
以上、ごすけでした。


