セル内改行の前後で分割する


セルの中で改行するには、改行したいところでAlt+Enterキーを押します。下図は「田中」「Alt+Enterキー」「亨」と入力しました。

このように、セル内で改行されたデータは、実際には改行位置に改行コードが含まれています。Excelの場合、Alt+Enterキーを押すと、16進数で0Aという制御コードが入ります。この0Aは、CHAR関数で表すとCHAR(10)です。したがって、セルが改行されているかどうかは、次のように判定できます。

=IF(ISERROR(SEARCH(CHAR(10),B3)),"改行されてない","改行されてる")

SEARCH関数は、検索文字が見つかったとき、その位置を返しますから、次のように改行されている位置を調べることも可能です。

=SEARCH(CHAR(10),B4)&"文字目が改行"

ということは、改行の前と後ろを、それぞれ抜き出すこともできるということです。

=LEFT(B5,SEARCH(CHAR(10),B5)-1)
=MID(B5,SEARCH(CHAR(10),B5)+1,256)

もちろん、実際にはまず「改行が含まれているかどうか」をIF関数で判定した方がいいです。これを応用すると、たとえば次のようなレイアウトで表引きができます。

=VLOOKUP(LEFT(A3,SEARCH(CHAR(10),A3)-1),$A$8:$B$12,2)*MID(A3,SEARCH(CHAR(10),A3)+1,256)

とか

=INDEX($B$8:$F$12,
        MATCH(MID(A3,SEARCH(CHAR(10),A3)+1,256),$A$8:$A$12,0),
        MATCH(LEFT(A3,SEARCH(CHAR(10),A3)-1),$B$7:$F$7,0)
      )

みたいに。まぁ、無理に1セルで計算しなくてもいいですけど。