2015年09月30日

セル内改行を「〓」に置換する

DTP作業者にとっての難易度 ★☆☆☆☆(1)

※2016.7.11にサンプルデータを追加しました(改行コードを検索して〓に置換するマクロを作成)。


InDesignのデータ結合機能を使用する際、Excelデータにセル内改行が残っていると不具合が生じます。
しかしMac版のExcelでは、通常の検索/置換機能を使ってセル内改行を他の文字(たとえば「〓」)に置換したり削除したりすることはできません。
そこで、これまで私は「LibreOffice」というソフトを使ってセル内改行を〓などに置換してきました。

※LibreOfficeを使う方法については当ブログの「定形フォーマットが並ぶレイアウトを作成する(データ結合)」でご紹介しています。


ただ、環境によってはMac版Excelだけで完結する必要もあるだろうと思い、今回はその方法を考えることにしました。

手順としては、
●データを入力したシートとは別に空白シートを用意する(同ブック内)。
●空白シートのA1セルに「=SUBSTITUTE(Sheet1!A1,CHAR(13),"〓")」と入力する。
●空白シートのA1セルをコピーし、空白シートの他セルにペーストする。
というものです。では動画をご覧ください。

※SUBSTITUTE関数は、あるセル内の特定の文字を別の文字に置き換える関数です。

※「Sheet1!A1」は「Sheet1!」というシートの「A1」セルを示しています(シート名が違う場合はこの部分を書き換えてください)。

※「CHAR(13)」はセル内改行のことです。

※「〓」は置換文字です。必要に応じて書き換えてください。



今回の方法については、以下のサイトを参考にしました。
http://web-memo.co/mac/excel/excel-mac-br-replace/

サンプルデータはこちら《minimum_2015_0930.zip》です。

【2015.9.30追記】
※どうやらCHAR(13)はCRで、CHAR(10)はLFのようです。念のため両方とも対応するよう「=SUBSTITUTE(SUBSTITUTE(Sheet1!A1,CHAR(13),"〓"),CHAR(10),"〓")」とし、データを更新しました。
2015.9.30更新サンプルデータはこちら《minimum_2015_0930b.zip》です。

【2016.7.11追記】
※改行コードを検索し、〓に置換するマクロを作成しました。このほうが簡単ですね。
2016.7.11追加サンプルデータはこちら《minimum20160711.zip》です。
posted by 照山裕爾 at 17:05| Comment(2) | TrackBack(0) | テキストデータ・Word | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
こんにちは、はじめまして。

過去にDTP駆け込み寺さんと、InDesignの勉強部屋さんの掲示板にSUBSTITUTE関数を使った計算式をコメントしてまして懐かしく思い書き込ませて頂きました。
Mac判エクセルのセル内改行の検索置換の問題は「もういいかげん、Windows判みたいに置き換えさせてよ!」って感じですが、Excel X、2008、2011とダメなんで、一般的にはあまり必要ないんでしょうね。

ただ、関数式を通すと値に表示形式が適用されず、数値で小数点以下の桁揃えしてある最後の「0」が無くなってしまい、例えば1.50は1.5。また、負の数の表示形式を使った(1.50)は-1.5となってしまいます。
現在はこれを逃れるために、データが数値と文字列の判定をして、数値ならTEXT関数で表示形式をセットし、文字列ならSUBSTITUTE関数で置き換えてます。
=IF(ISNUMBER(Sheet1!A1),TEXT(Sheet1!A1,"###.00;(###.00)"),SUBSTITUTE(Sheet1!A1,CHAR(13),"@"))

長くなってしまい、すみませんでした。
Posted by しまざき at 2015年10月22日 15:06
しまざき様
コメントをありがとうございます。
元が「数値」の場合、こういった方法が有効なんですね。
Excelは、あまり使うことがないのでまだまだ勉強不足です。
これからもよろしくお願いします。
Posted by 照山裕爾 at 2015年10月23日 03:52
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/426996756

この記事へのトラックバック