Google Workspace割引クーポン無料配布中! 詳しくはこちら

「結合するとズレる」を解消!FLATTENを使ったスマートな対処法|スプレッドシート

  • URLをコピーしました!

ごすけです。

今日は、先日お客様のスプレッドシート開発で実際に遭遇した「結合セルのズレ問題」と、その解決方法をご紹介します。

私ココナラでスプシのテンプレ開発を承っているのですが、お客様から「結合したセルにデータが上手く反映されない」と質問をいただきました。

2行のセルを結合したところにデータを反映させたいというご要望です。

元のデータは結合されていないフラットな状態で管理されているのですが、それを見やすく表示するために結合セルに落とし込みたい、というわけです。

最初は単純に考えて、={A2:A11} のように範囲指定してデータを参照させればいいかなと思ったんです。

でも、ここで問題が発生しました。

結合セルは2行として認識されるんですね。

つまり、フラットなデータをそのまま結合セルの範囲に流し込もうとすると、1つのデータが2行分の領域に対して入ってしまい、次のデータとの間に空白ができない。

結果として、データが詰まってしまって2行飛ばしにならないんです。

「じゃあ、データとデータの間に空白を入れたいんだけど、どうしたもんか…」

そう悩んでいた時に思いついたのが、FLATTEN関数を使った方法でしたので紹介したいと思います。

この記事でわかること
  • 結合セルにデータを反映させる際のズレ問題とその原因
  • FLATTEN関数を使った結合セルのズレ解消方法
  • TRANSPOSE関数との組み合わせによる応用テクニック
タップできる目次
スポンサー

FLATTEN関数で解決

解決方法はとてもシンプルです。

STEP
空白列を用意する

元データの隣に空白の列を用意します。データ列が1列、空白列が1列という感じです。

STEP
FLATTEN関数で一次元化する

この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で処理する際もかなり面倒になるからです。

でも印刷時の見た目を整えたり、お客様への納品物として見やすくするためには、結合セルがどうしても必要な場面もあります。

今回ご紹介した方法が、同じように結合セルで悩んでいる方の助けになれば嬉しいです。

以上、ごすけでした。

ごすけ|生産技術者

1989年生まれの30代。妻と娘の3人家族。
大手メーカーからスタートアップ企業に転職。工程設計の仕事の傍ら、Google Workspaceを使って社内DXを推進中。
Google Workspaceの使い方・DX活用事例をブログで発信しています。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
タップできる目次