エクセルのセル内の改行を削除する方法

このQ&Aのポイント
  • エクセルのセル内にある改行を削除する方法をご紹介します。
  • 改行が含まれるセル内のテキストを整形する方法について解説します。
  • VBAやマクロを使って、空の改行や最終行の改行を自動で削除する方法を説明します。
回答を見る
  • ベストアンサー

エクセルのセル内の改行を削除する方法

以下のようなセルが沢山あります。 ※[改行]とは改行が入っているという意味です。 -------------------セルの中身はここから [改行] [改行] [改行] (1)みかん[改行] (2)こたつ[改行] (3)おもち[改行] [改行] [改行] -------------------セルの中身はここまで。 このとき、文章が入っていないところの[改行]、および、最終行の[改行]だけを自動で削除して、 -------------------セルの中身はここから (1)みかん[改行] (2)こたつ[改行] (3)おもち -------------------セルの中身はここまで。 このように整形するためにはどういうVBAもしくはマクロを作ったらよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

とりあえずA列について。 たとえば。 sub macro1()  dim h as range  dim res as string  for each h in range("A1:A" & range("A65536").end(xlup).row)  with application  res = .substitute(h.value, vblf, " ")  res = .trim(res)  h = .substitute(res, " ", vblf)  end with  next end sub たとえば。 sub macro2()  dim h as range  dim a, x  dim res as string  for each h in range("A1:A" & range("A65536").end(xlup).row)  a = split(h, vblf)  res = ""  for each x in a   if x <> "" then    res = res & vblf & x   end if  next  h = mid(res, 2, 999)  next end sub

fIR81wCJGk24XPv
質問者

お礼

一つ目に挙げて頂いた例を加工したところ、非常に簡単な方法で目的を実現することができました。 このプログラムの意味をいま辞書を引きながら学んでいるところです。 このたびはありがとうございました。

その他の回答 (4)

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

 TRIM関数だけでは改行を削除する事は出来ませんし、CLEAN関数では全ての[改行] が削除されるため、 (1)みかん(2)こたつ(3)おもち となってしまい、 (1)みかん[改行] (2)こたつ[改行] (3)おもち にはなりません。  ですから、ワークシート関数で行う場合には、次の様な関数となります。 =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1," ",CHAR(30))," ",CHAR(31)),CHAR(10)," "))," ",CHAR(10)),CHAR(30)," "),CHAR(31)," ")

fIR81wCJGk24XPv
質問者

お礼

関数を使うと非常に複雑なことができるのですね、とてもよい刺激になりました。 ありがとうございました。

  • zur
  • ベストアンサー率33% (17/51)
回答No.4

A1に入ってるなら =CLEAN(A1) セルの書式設定 配置タブ 折り返して全体を表示する これではだめですかね

fIR81wCJGk24XPv
質問者

お礼

ご回答ありがとうございます。 私はまだVBAをほとんど知らないのでCLEANを検索するきっかけになりました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

回答No1です。 シート2のA1セルには次の式を入力して配置のタブで折り返して全体を表示するでもよいでしょう。 =IF(Sheet1!A1="","",TRIM(Sheet1!A1))

fIR81wCJGk24XPv
質問者

お礼

重ねてご回答いただきましてありがとうございます。 勉強になりました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

例えばシート1のA1セルから下方にそのようなデータが幾つも入力されているとします。 そこでシート2のA1セルには次の式を入力して下方にドラッグコピーします。 =IF(Sheet1!A1="","",MID(Sheet1!A1,FIND("(",Sheet1!A1),LEN(Sheet1!A1)-FIND("(",Sheet1!A1))) A列を選択して「セルの書式設定」から「配置」のタブで「折り返して全体を表示する」にチェックをします。

関連するQ&A

  • EXCELのセル内改行の削除について

    お世話になります。 どなたかご教授お願いします。 セル内のデータの末尾にあるセル内改行を一括削除するにはどのようにすればいいのでしょうか。 前後空白を削除する、trim関数の「セル内改行」版のような事をしたいのですが、どのようにマクロを記述すれば良いかわかりません。 A1~A1000まで下記のようなデータが入っています。末尾のセル内改行は一つとは限らず、二つ以上入っていることもあります。 あああ(セル内改行) いいいい(セル内改行) ううう(セル内改行) ↓ あああ(セル内改行) いいいい(セル内改行) ううう すみませんが、どなたかご教授お願いします。

  • EXCELのセル内改行について

    よくある質問としてExcelの見た目と印刷が違うというものがありますが、それを回避するために、セル内の強制改行を使うと思います。 内部統制のRCMで使っている表なのですが、縦書きの列のセルがあります。同じ行にある横書きのセルの内容が少ないため、セル幅を自動調整しようとすると、行の高さが異常に高くなってしまいます。 縦書きのセルはレイアウト上2行(列)に収める必要があるので、縦書きのセルで強制改行すると、思うように治まるのですが、行のセル幅を自動調整すると、勝手に3行(列)になってしまい、印刷できなくなってしまいます。 どの位置で改行してみても、勝手に1文字分が余分な1行(列)になってしまい、マクロで自動調整をした後に印刷をかけようとしているので、見ばえの悪い表になってしまいます。 (うまく表現できていないようでしたらお許し下さい) 縦書きのセルの自動調整をうまく行う方法は無いでしょうか?

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

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

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

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

  • マクロで指定したセル内の改行を削除

    エクセル2013です。 既に動いているマクロに別な処理を追加したいです。 まずその追加したい処理だけの単独のコードを 作成し、正しく動いたら 今使用しているマクロの最初に組込たいです。 内容はシート内において、指定した複数のセルの中の すべての改行を削除です。 マクロでなくてもできますが、上記理由でマクロで行いたいです。 ・質問1 Sub 実験() 最終行 = Cells(Rows.Count, 6).End(xlUp).Row 'F列の最終行を求める Range(Cells(4, 1), Cells(最終行, 6)).Value = Replace(Range(Cells(4, 1), Cells(最終行, 6)).Value, vbLf, "") End Sub これですと 「型が一致しません」でERRです。 これは何処が悪いのでしょうか? ・質問2 Sub 改行削除() Dim 対象範囲 As Range 最終行 = Cells(Rows.Count, 6).End(xlUp).Row 'F列の最終行を求める   Set 対象範囲 = Range(Cells(4, 1), Cells(最終行, 6)) 対象範囲.Replace vbLf, "", xlPart End Sub ↑これなら正しく動きました。 でこれを、今動いているマクロの先頭に入れたら 対象範囲.Replace vbLf, "", xlPart ↑ ここで「型が一致しません」でERRです。 なぜ単独では動作するのに、別のマクロの先頭に組み込むとERRに なるのかわかりません。 よろしくお願いします。

  • Excelのマクロで改行を含んだテキストファイルの中身を1つのセルに書

    Excelのマクロで改行を含んだテキストファイルの中身を1つのセルに書き込みたいです。 ネット上を探してみると、1行ごとにわけて各行に書き込むマクロは見つかったのですが、 もっと原始的にファイルを開くのダイアログからテキストを指定して、その中身をただ単純にセルに入力したいです。 どのように記述すればよいでしょうか??

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

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

  • エクセル 行数指定し一つのセルに改行込で入れる

    日本語が下手でもうしわけないです。 エクセルのマクロにて、行数指定指定したセルを別セルに 改行を含めて入れたいのです。 具体的なやりたいこととしては、 A列に不定期間隔で不定形の文字列が入力されていて、(間は空白) その文字列から文字列の行数を読み、 B列の同じ行数分のセルをひとまとまりとし、 別シートのA1に改行込みで入れる。 次のまとまりはA2に次はA3に… といった動作をさせたいです。 例. 1.A1,A6,A9に文字列があるとする。間は空白 文字列間の行数を読む (1)A1-A5 (2)A6-A8 (3)A9-最終行 2.A列で取得した行数と同じ行数をB列で指定 (1)B1-B5 (2)B6-B8 (3)B9-最終行 3.B列で指定したセルをひとまとまりとして 別シートのA1から順に改行込みで入れる (1)シート2のA1 B1(改行) B2(改行) B3(改行) B4(改行) B5(改行) (2)シート2のA2 B6(改行) B7(改行) B8(改行) (3)シート2のA3 B9(改行) ・ ・ 最終行 ####### マクロでの実現を考えているのですが、 マクロ初心者でさっぱりわかりません。 どなたか、マクロでの記述例を教えて頂けないでしょうか。 また、関数で実現できるのであれば、そちらも教えて頂きたいです。 宜しくお願いします。

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

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

  • エクセルの行を削除したい。

    VBAを使用して以下の処理をしたいと思ってます。 セルの中が小計ならば、小計行を含めて5行削除するっと言う処理を最終行まで繰り返したいんですが、上手く行きません。 よろしくお願いします。

専門家に質問してみよう