プチIT化

【Excel】セルを縦に結合するにはどうしたら?試してみた!

こんにちは、わたあめです。Excelでいくつかのセルを結合すると、左上のセルの値のみが残った状態で結合されてしまいますよね。

わたあめ
わたあめ
セルのデータを消さずに結合する方法はないのかな?

さらに、今回は結合したいセルの個数は変動したりする場合はどうしたらいいのか?少しであれば手作業でいいが、データが多い場合は手作業では面倒&オペミスが発生する可能性りますよね。

今日は、セルを縦に・セルの結合数が変わる場合にどうしたらいいか?を考えてみた記事になります。それでは、いってみましょう!

セル結合の基本操作

通常セルを結合するには、以下の操作を行いますよね。

  1. 結合したい右クリック>[セルの書式設定]>[配置]タブ>[セルを結合する]

ですが、左上のデータのみが結合したセルに反映するので、セル同士のデータ結合には以下のような方法があるようです。

  • "&"で結合
  • 関数を使う(CONCATENATE,CONCAT,TEXTJOIN)

でも、これら関数は結合するセルの個数が決まっていたり、結合するセルの位置がきまっているなどに規則性がある場合にのみ有効ですよね。以下の例で行くと、AAAの商品は2行結合したい、BBBは結合なし、DDDは3行結合したい、という具合。

わたあめ
わたあめ
規則性がない場合はどうすればいいのか?

ということを考えてみました!!

セルを縦に結合するやり方

結合するセルの数が決まっている場合

決まっている場合は、単純に"&"を使った、以下の手順で結合しました。

  1. D列に結合用のセルを準備:2行分を結合する用
  2. 結合したセルに結合する関数を記入:セルD2に"=C2&C3"
    CONCAT関数などを利用してでもいいですね。
  3. オートフィルする:結合したセルの右端から下方向にドラッグ

コメント列は常に2行分存在するとするなど、行数が固定の場合はこのやり方で良いかと思います。

結合するセルの数が変動する場合

1:判定列の追加

判定用の列を挿入します。判定とは、そのセルが結合すべきセルなのか?(結合のまとまりか?)を判断するための値を格納する列だと思ってください。

挿入した列に、結合したい複数行のうち1行だけ値が入っている列を参照します。(複数行の一番上に値が入っている前提ですが。)例だとB列になります。

そうすると、以下のルールで値が入ってきます。

  • 結合していないセルの場合:セルの値
  • 結合しているセルの場合で、結合セルの一番上(はじめ)の行:セルの値
  • 結合しているセルの場合で、結合セルの一番上でない行:0

"0"となった場合、結合しているセルの2行目以降ということになります。この"0"かどうかをセルが結合されているか?(結合されてなくても、文字列結合したい列かどうかの)判定に使っていきます。

そして、この列の最終行(表外)には、何かしらの文字列を入力しておく。今回はわかりやすいよう"End"と入れています。

2:行を結合する

結合すべき行の内容(文字列)を結合していきます。

例だと、AAAの商品のコメントメモ1とメモ2の文字列を結合、BBB,CCCはそのまま1行、DDDはメモ1~3を文字列結合するという処理になります。

IF文を使って、結合するか判定していきます。[1:列判定の追加]で追加した列の値が"0"だった場合、上の行とデータの行を結合する、という考え方です。式は画像の青枠を参照してください。

"0"だったら同じまとまりのデータの続きなので、それまでの行のデータと自分自身の行の文字列を結合するということです。結果、以下になります。

不要行のデータを消す

不要行のデータを消すイメージで、ナシ=空値にします。

IF文を使って、結合した行のみ(1行の場合はそのまま)取り出し、それ以外は""を設定するという式になります。

考え方は以下です。

  1. 判定値が"0"でなく、その一つ下の行の判定値が"0"でない場合、セルの値そのまま
  2. ①の条件に一致しない場合で、判定値が"0"でその一つ下の行の判定値が"0"出ない場合、セルの値を空""にする

セルが結合していない場合は、[2:行を結合する]のデータをそのまま使い、セルが結合していた場合は、下に続けて結合されているのでこの行のデータは使わないということです。結果は以下となります。

これでまとまりの一番下の行に値が入ることにはなりますが、意図したデータが取得できそうです。

さいごに

なんだか、今回の記事はややこしくて文章化するのが難しく、わかりにくくなり申し訳ないです。(思い切り語彙力とライディングスキルの問題w)

この文章の中から少しでも解決の糸口が見つかれば幸いです。それでは、また!

flier(フライヤー)