2012年08月22日

excel:セル内の改行を「見える」ようにする関数

 ちょっと大袈裟なタイトルにしましたが、私にとっては「すごい」と実感した関数を一つ覚えました。

 あるCGIで、データ(テキストファイル)を作るのに、EXCELを元に作りたいのですが、セル内に改行があるときに、それを<br>で表し、1行にまとめたかったのです。しかし、これまではそれができず、手作業でやっていました。

excel_1.gif


 この通り、2つのデータを、間にセパレータ"<>"を入れて結合し、テキストデータを作るものです。


 A2やB2のように、セル内が1行のデータならば問題ないのですが、A3やB3のようにセル内に改行がある場合には、それを<br>としてテキストデータ内で明示したいわけです。

 C3のセルをコピーしてメモ帳に貼り付けると、改行は消えて単純に1行のデータになります。

excel_2.gif


 面白いのは、同じことを、メモ帳にではなく、EmEditor(古いバージョン)に貼り付けると改行が消えません。改行の痕跡が残るのはいいのですが、1行にまとめたいデータが、改行しただけの行数になってしまいます。

excel_3.gif


 いずれにしても、「改行を<br>として、1行にまとめる」という結果にはなりません。

 検索をしてみたらすぐに同様の疑問を持っている人の質問と回答が見つかりました。

 結論として、
=SUBSTITUTE(参照セル,CHAR(10),"<br>")
という関数を使えばいいというのです。
 この関数は、基本的には参照セルの値を返すのだが、その値(文字列)中にCHAR(10)、つまり改行が含まれる場合は、その箇所だけを<br>に置換せよ、というものだと分かりました。なお、改行のような特殊な「文字」ではなく、普通の文字(1バイト、2バイトとも)でも構いません。

 そこで、
=SUBSTITUTE(A5,CHAR(10),"<br>")&"<>"&SUBSTITUTE(B5,CHAR(10),"<br>")
と関数を書き換えてみました。

excel_4.gif


 ご覧の通り、無事に改行を<br>に置換し、1行のデータを得ることが出来ました。

 また、これをメモ帳(あるいはEmEditor)に貼り付けると、
excel_5.gif

というふうに、不要だった前後の""(ダブルコーテーション)も付かなくなるという結果が得られました。

 めでたし、めでたし。






posted by kewpie at 21:50| Comment(0) | TrackBack(0) | ファイル作成
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/57734537
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
コメントの投稿について
○お名前とコメント欄の記入は必須です。
○メールアドレスは任意です。記入されても公開はされません。管理人のみに知らされます。
○スパム防止のため、
・ホームページアドレス欄への記入はできません。
・コメント欄にURLは記入できません。
・スパムと思われる語を記入できません。
 これらをしようとすると、最終的に投稿完了できません。
○投稿完了後に、管理人の判断でスパムと判断した投稿は削除させていただきます。