• 締切済み

Excelのセル内にある特定文字で改行させたい

ある汎用のシステムから出力されるテキスト(文章)をCSV形式のデータをEXCELデータに変換しています。そのEXCELに変換されたデータは、文章です。 1点問題があります。そのセル内の文章は、ある特定の記号を改行の代わりとして、連続したテキスト文章になっているため、非常に読み辛いものになっていますいます。その改行を意味する特定記号は、複数個存在し、セル内の個数は一定ではありません。  そのため、読み辛さを解消するためい、その特定記号をセル内での改行に置換させる、マクロまたはVBAでの一括処理することが出来ないでしょうか。置換処置後は、特定記号は不要です。 なお、(1)改行を意味する特定記号は、「~|」です。~と|の組み合わせで、それはそれぞれ半角表記されています。(2)1ファイルにおける対象レコード(行)は、約3,000~10,000行あり、手作業での処理は不可能です。 宜しくお願いします。

みんなの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 回答番号ANo.2です。 >私個人では、マクロを走らせるスキルがないので、  それでは、多少の手間は掛かりますが、次の様な方法は如何でしょうか。  まず、置換専用のBookを作成し、その中に「元データ貼付け」という名前のシートと、「置換後」という名前のシートを作成して下さい。  そして、置換後シートのA1セルに次の数式を入力して下さい。 =SUBSTITUTE(INDIRECT("元データ貼付け!R"&ROW()&"C"&COLUMN(),FALSE)&"","~|",CHAR(10))  次に、置換後シートのA1セルをコピーして、CSV形式データの貼り付け先を全てカバーするのに充分なセル範囲に、貼り付けて下さい。  ここまでが準備段階となります。  そして、CSV形式のデータをEXCELデータに変換する際には、まず、置換専用Bookの元データ貼付けシートにデータを貼り付けて下さい。  すると、置換後シートに、元の文字列データの「~|」の部分を、Excelのセル内での改行を意味するコード番号10の文字(?)に置換した文字列が表示されます。  そこで、置換専用Bookを開いたままの状態で、変換したデータを最終的に保存する、貼付け先のBookを開き、 置換専用Bookの置換後シート中で、データが表示されているセル範囲をコピーしてから、Excelの「形式を選択して貼り付け」機能を使用して「値」のみを、貼付け先のBook中の貼付け先となるセル範囲に貼り付けて下さい。  尚、上記の数式は(一般的な関数とは異なり)参照元のセルが削除されてもエラーとはなりませんから、置換専用Bookを使って、新たに別のCSV形式データを変換するために、元データ貼付けシートに貼り付けられている古いデータを消去する場合には、セル範囲や、行単位、列単位で、セルごと削除しても、エラーとなったり、セルやデータの並び方がおかしくなったりする心配はありません。

April-Z
質問者

お礼

繰り返し、ご支援頂き大変ありがたく感じております。 早速明日ためしてみたいと思います。 大幅に難易度が下がったので、私にも操作出来そうな気がします。 時間の関係で、週明けの結果報告になることも想定されます。 ご容赦願います。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 「置換」では「~」が変換されない様です。  以下は、CSV形式から変換された文字列データが、Sheet1のA1~G10000の範囲内にのみ存在していて、且つ、Sheet1のコピーシートであるSheet1(2)等が存在していない場合のマクロです。  シート名やセル範囲が異なっている場合には、適時修正して下さい。  それから、このマクロを動作させると、処理のために作成したSheet1(2)シートを削除しても構わないかどうかを尋ねるダイアログボックスが、最後に現れますので、[削除]ボタンをクリックして下さい。 Sub Macro1() ' ' Macro1 Macro ' ' Sheets("Sheet1").Select Sheets("Sheet1").Copy Before:=Sheets(1) Range("A1").Select ActiveCell.FormulaR1C1 = "=SUBSTITUTE(Sheet1!RC,""~|"",CHAR(10))" Range("A1").Select Selection.Copy Application.Goto Reference:="R1C1:R10000C7" ActiveSheet.Paste Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Application.Goto Reference:="R1C1" Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlCenter .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Sheets("Sheet1 (2)").Select ActiveWindow.SelectedSheets.Delete End Sub

April-Z
質問者

お礼

回答ありがとうございます。私個人では、マクロを走らせるスキルがないので、周囲の有識者にアドバイスを受けて、できるだけ早くに試してみたいと思います。

  • Cupper-2
  • ベストアンサー率29% (1342/4565)
回答No.1

>置換処置後は、特定記号は不要です。 …「置換」すりゃ良いじゃない。  検索文字列にその特定文字  置換後の文字列に改行コード(Ctrlキーを押しながらJキーを押す) でOK。 改行コードは表示されませんが、ちゃんと入力されていますので安心してください。 (てか、他の置換をするときに消し忘れる方が怖いくらいw) ちなみにこうすると、セルの高さが足りないと開業され続けた文字列は表示されなくなります。 (行の高さには上限がある) ■そして本題(今までのは前置きです) …ですので、「区切り位置」 で複数の列に分解することをお薦めします。 区切り文字として、その特定文字を指定すれがいいです。 横方向に記入されているセルが増えるので注意してください。 必要なら、処理後に行をコピーして「形式を指定して貼り付け」から 「縦と横を入れ替えて貼り付け」る選択で貼り付け直すといいでしょう。 これなら1つのセルの高さが全て等しくなりますから見た目もすっきりします。

April-Z
質問者

お礼

回答ありがとうございます。検索文字列にその特定文字置換後の文字列に改行コード(Ctrlキーを押しながらJキーを押す)は、存じませんでした。早速試してみます。

関連するQ&A

  • エクセルのセル内改行のエクスポートについて

    システムの設計で、人が手入力した情報をtsvファイルにエクスポートして、そのファイルをシステムで取り込もうと検討しています。 けれども、元ファイル内に、エクセルのセル内改行が含まれていて、それをどうしても何かの記号に置換して、改行を詰めてテキストファイルに吐き出すことができません。 やりたいことは以下になります。 1.エクセルの改行を、テキストに吐き出すときには詰めたい。 2.テキストファイルで、改行は詰まっているけれど、変わりに別の文字「"」や「|」などに置換されていたい。 ややこしいですが、どなたか教えてください!

  • エクセルで、「セル内改行」を自動化したいのですが・・・。

    今回もお世話になります。 今回の目的ですが、作業の自動化、 もしくは、簡略化にあります。 例えば、以下の様な文字列の書かれた テキストファイルがあるとします。 あああああああああああ。 ああああ、ああああああ、ああああああああああ。 あああああ、ああああああ。 あああああああああああ。 これをこのまま読み込むと、 一行目:A1 二行目:A2 という感じで読み込まれます。 これ自体は、全然問題ないのですが、 その後に、セル内改行(Alt+Enter)を手作業で入れ、 文章を整えているのですが、非常に時間が掛かります。 これをマクロなどで簡略化できるか 調べているのですが、良い方法が見つかりません。 そこで、テキストエディターで、 セル内改行と解釈してくれる記号を埋め込み、 エクセル側で、セル内改行に変換できないだろうかと、 思いつきました。 次のようなイメージです。 ("\n"を、セル内改行文字と仮定します。) あああああああああああ。 ああああ、\nああああああ、\nああああああああああ。 あああああ、\nああああああ。 あああああああああああ。 これを読み込んだら、"\n"の位置で セル内改行が入ったら便利かと・・・。 このやり方以外でも構いませんので、 何か良い方法は無いのでしょうか!? ちなみに、作成したい数は、 大体50ファイル位です。 テキストファイルを 特定のルールに沿ったエクセルに変える作業です。 PC環境は、 OS:Windows XP Home Edition ソフト:Excel 2000,WZ_EDITOR です。 よろしくお願いします。

  • 改行されたテキストをエクセルにセルに分けて移すには

    改行されたテキストをコピーしてエクセルに貼り付けるとひとつのセルにまとめて入ってしまいます。 テキスト文書の改行ごとにセルに分けて移すにはどうしたらいいのでしょうか。 2000 2001 2002 などをExcelのセルに行をわけて移したいのですが

  • 【エクセル】セル最後にある無駄改行を検索・削除したい

    改行付きテキストデータを一杯持っているエクセルファイルがあるとします。 1つのセル複数の行があります。 最後の行になんらかの文字があればOKですが、 文字が無く、空の改行だけが存在する場合があります。 このような、最後の行が空の改行のセルを見つけて、検索・置換みたいな感じで最後の空改行だけ削除する方法はあるのでしょうか。 教えて頂ければ幸いです。どうぞよろしくお願い致します。

  • Access2003で特定列の改行コードを削除してCSVへエクスポート

    またまた、質問させていただきます^^; Access2003にてCSVデータを一旦インポートして、クエリなどを使いデータを編集し、別のテーブルへ追加クエリを使用して吐き出し、そのテーブルのデータ全てをCSVファイルへエクスポートする、といった処理をしております。 はじめに取り込むCSVデータが、セル内(エクセルの編集画面でたとえさせていただきます)で沢山改行されているデータで、それをアクセスに取り込むと改行は一旦なくなったように、見えるのですが、エクスポートするとやはり改行コードが着いたままエクスポートされます。 この改行コードをAccessの処理で削除したいのですが出来るのでしょうか?CSV内の改行全てを削除するのではなく、特定列内(例えばC列など)のセル内の改行コードのみの削除です。 エクセルのClean関数なども試しましたがAccessの処理で一括してしまいたいのです。 TeraPad、秀丸などのテキストエディタで改行コードの置換をすると全て消えてしまい、CSVの行を意味する改行コードまで消えてしまうので使えないし。。。 皆様、お知恵をおかし下さい!お願いします。

  • エクセルのセル内の1文字を置換で「セル内改行」コードにする

    お世話になります。 エクセルのセル内の1文字を置換で「セル内改行」コードにしたいのですが、 置換側の「ALT+改行」のコードが解りません。 宜しくお願いいたします。

  • エクセルの改行マーク(?)の置換について

    「改行の入ったデータ」を、 ファイルメーカー上から、をエクセルシートに貼り付けたのですが、 改行のあった部分に「・」の記号が入ってしまいました。 これをなくしたいと思って置換しようとしたのですが、 「・」では認識されないようで、置換ができませんでした…。 <ファイルメーカー>   12  34    ↓ <エクセル> 12・34 (⇒「・」をなくしたいです…) この「改行」を表す記号は、「・」とは違うモノなのでしょうか? また、この記号を置換する(なくす)には、どうしたらよいでしょうか?

  • Excel 特定のセルだけEnterでセル内改行

    タイトル通りのことなのですが、VBA等を駆使してできないか悩んでいます Excelのセル内改行は通常Alt+Enterなのですが、 使っているシートの一つのセルだけ複数行入れるような大きな所があります。 他のセルでは問題ないのですがここの入力時では、 いつもAltを押しながらでないと改行できない煩わしさが募りまして、 「このセル内に限り」Enterキーだけで改行できるようにしたいのです。 条件としてはあくまでこのセルのみで、形を崩さずにできることが望ましいです。 この入力セルは他シートから参照されているため 複数行のセルに分割したり、テキストボックスに置き換えることは難しいです 色々探した挙句、Application.MoveAfterReturn など VBAを駆使して考えてみたのですが 手詰まりになってしまいました。 何かできる方法はありますでしょうか?

  • 改行を含む文章(ワード)のひとつのセルへの貼り付け方。(エクセル)

    こんばんは。 ワードの文章をエクセルに「コピー、貼り付け」を使って行うコピーの方法について質問です。 ワードにおいて改行を含む文章をエクセルにコピーして、貼り付けを行うとひとつのセルに収めることができません。 例えば、改行を含む10段の文章をコピーすると、エクセル上ではA1からJ1までのセルに1行ずつ表示されてしまいます。これを、A1セルのみに表示することはできるのでしょうか?つまり、コピーした文章をひとつのかたまりとして貼り付けることは可能なのでしょうか? ちなみにエクセル97です。 よろしくお願いします。

  • エクセルのセル外改行は可能ですか?

     エクセルのセル内改行ができることは知っていたのですが、セル外の改行は可能ですか?  例えば文章を書くところに下線(横)があり、文章を書いていくと、縦線にぶつかるので、それ以上は次のセルに自動的に改行がされないと思うのですが・・ 文章を更正する場合エクセルでやる場合には、切り取り、貼り付け等でやらざるを得ないのでしょうか?線がある場合にはエクセルでは対応ができないのでしょうか? 

専門家に質問してみよう