- ベストアンサー
EXCELのセル内改行の削除について
お世話になります。 どなたかご教授お願いします。 セル内のデータの末尾にあるセル内改行を一括削除するにはどのようにすればいいのでしょうか。 前後空白を削除する、trim関数の「セル内改行」版のような事をしたいのですが、どのようにマクロを記述すれば良いかわかりません。 A1~A1000まで下記のようなデータが入っています。末尾のセル内改行は一つとは限らず、二つ以上入っていることもあります。 あああ(セル内改行) いいいい(セル内改行) ううう(セル内改行) ↓ あああ(セル内改行) いいいい(セル内改行) ううう すみませんが、どなたかご教授お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
最後にセル内開業がない場合も考慮すると、こんなマクロでもできるでしょう。 Sub Macro1() Dim trg As Range For Each trg In Range("A1:A1000") If Len(trg.Value) > 0 Then If Right(trg.Value, 1) = Chr(10) Then trg.Value = Left(trg.Value, Len(trg.Value) - 1) End If End If Next End Sub
その他の回答 (3)
- bin-chan
- ベストアンサー率33% (1403/4213)
#3です。「末尾の改行文字だけ」だったんですね。 ならClean関数では「すべての改行文字を除去」なのでごめんなさい。 VBAでならば 1)Split関数を利用し、区切り文字にセル内改行(vbLF)を指定して区切る。 2)区切られた個数をBoundで取得。 3)Forループで末尾から(Step-1)有効なデータが出現する個数を取得 4)Forループで、有効なデータが出現す個数までを区切り文字vbLFを挟みながら結合する。 です。
- bin-chan
- ベストアンサー率33% (1403/4213)
マクロ(VBA)で無ければダメですか? ワークシート関数に[Clean]がありますよ。 セルA1~A10に対象セルがあり、セルB1~B10に結果を返すなら、 セルB1に式[=Clean(A1)]を設定し、セルB2~B10へコピー&ペースト。 マクロ(VBA)でやるなら、以下の方法が簡単。 Split関数を利用し、区切り文字にセル内改行(vbLF)を指定して区切る。 得られた結果を、Join関数を利用し、区切り文字に""を指定して連結する。 ユーザー定義関数で使用するサンプル セルに式[=改行文字除去(A1)]を設定すれば使えたはず function 改行文字除去(argString as string) as string 改行文字除去 = Join(Split(argString, vbLF),"") end function
お礼
回答ありがとうございます。 Clean関数は、質問する前に試したのですが、セル内改行が全て削除されてしまい、望んでいる方ではありませんでした。 ユーザー定義関数というものもあるのですね。こちらも、セル内改行が全て削除されてしまい望んでいる形と違ったのですが、勉強になりました。 ありがとうございました。
- merlionXX
- ベストアンサー率48% (1930/4007)
目に見えない改行記号も一文字ですから以下でいけるはずです。 Sub test01() For i = 1 To 1000 With ActiveSheet .Cells(i, "A") = Left(.Cells(i, "A"), Len(.Cells(i, "A")) - 1) End With Next End Sub
お礼
回答ありがとうございます。 望みの形で削除を行えたのですが、データの末にセル内改行がないデータを含んでいたためか、実行時エラー5が出てしまいました。 でも、勉強になりました。 ありがとうございました。
お礼
回答ありがとうございます。 望んでいる通りの形で削除が行えました。 本当に助かりました。 ありがとうございます。