最近、RDB(リレーショナルデータベース)的な考えをしていない方の作ったExcelファイルに触れる機会があり、こういうファイルを扱うときに私と同じことをやりたいと考える方は少なくないだろうな、と感じることがありましたので記事にさせていただきます。
RDB的考えをする方なら、一つの列に複数の異なったタイプのデータを入れるということは、まず、しません。
しかし、RDB的考えをしない方の作ったExcelでは、RDB的考えをすれば絶対に別フィールドにするようなデータが一つのセルに入っているということもあります。
例えば、名称と電話番号が一つの列(セル)に入力されているというようなケースがよくあるのです。
そのExcelを何らかのシステム・プログラムなどから利用しようとした場合に、同じ列に入っている異なるデータを、別々の列にしたいという要望が出てきます。
その一つの解決策です。
一つの列に異なるデータが入力される場合でも、とりあえず改行は入れられていることが多いようですから、先頭から改行までを取得したり、一つ目の改行以降を取得する数式を作れば、同じ列に入れられた異なる種別のデータを別の列に分割するということが可能になります。
セルの先頭から改行までの文字列を取得する
以下のような数式で、一つ目の改行までの文字列を取得できます。※A1セルに入力されている文字列の先頭から改行までを取得する数式
「=LEFT(A1, FIND(CHAR(10), A1) - 1)」
「CHAR(10)」がExcelの改行・LF(Line Feed)です。
改行コード「CHAR(10)」を
A1セルの中からFIND関数で探し「FIND(CHAR(10), A1)」
その前までの文字列「FIND(CHAR(10), A1) - 1」を
LEFT関数で取得「LEFT(A1, FIND(CHAR(10), A1) - 1)」
しています。
一つ目の改行以降の文字列を取得する
一つ目の改行より後の文字列を取得するするのも同じような考えですが、使うのがLEFT関数ではなくMID関数を利用します。※A1セルに入力されている文字列の一つ目の改行以降の文字列を取得する数式
「=MID(A1, FIND(CHAR(10), A1) + 1, LEN(A1))」
改行「CHAR(10)」を
A1セルの中からFIND関数で探し「FIND(CHAR(10), A1)」
その直後を起点にして「FIND(CHAR(10), A1) + 1」
MID関数で取得「MID(A1,FIND(CHAR(10), A1) + 1, LEN(A1))」
しています。
なお、
こういうExcelファイルを作るような組織・集団・人の場合、[Alt]+[Enter]による改行ではなく、スペースをたくさん入力して改行しているケースもあります。
そんな場合は既にご紹介している、TRIM関数・SUBSTITUTE関数・CHAR関数を使った数式をご参照ください。
Home » Excel(エクセル)の関数・数式の使い方 » 文字列 » セルの先頭から改行まで、一つ目の改行以降の文字列を取得する数式-FIND・CHAR・LEFT・MID関数