WindowsXP エクセル2003を使用しています。

一つのセル内の空白の行だけを削除したいのですが、方法はありますか?
具体的にはA1内に下記のように入力があります。
--------------------------------------------------------------------
あいうえお
かきくけこ

さしすせそ
たちつてと
--------------------------------------------------------------------
「かきくけこ」と「さしすせそ」の間の空白の行だけ削除したいのですが、可能でしょうか?

他の行の改行はそのまま残したいので、CLEANだと無理でした。

A 回答 (5件)

関数や置換だとよい方法が見つかりませんでした。


マクロを作ってみました。

★念のため、実行前に最新の状態でファイルを保存をしてから、試してみてください。

(1)セル内の空白行を削除したい列またはセル範囲を選択します。

(2)Alt + F11 キーを押しVisual Basic Editorを開きます。

(3)左側にあるツリー状のメニューを操作します。
 (表示されていなければ、Ctrl+Rキーを押す。

VBAProject(ファイル名.xls)
└Microsoft Excel Objects
  ├
  ├
  ├
  └ThisWorkbook ←ここをダブルクリックして開きます。


(4)右側の広い欄に、下記のコードを貼り付けます。

'-↓ここから-----
Sub セル内空白行削除()
Dim myArray
Dim tmpStr As String

For Each obj In Selection
If obj.Value <> Empty Then
myArray = Split(obj.Value, vbLf)
For idx = LBound(myArray) To UBound(myArray)
If idx = 0 Then
tmpStr = myArray(idx)
ElseIf myArray(idx) <> Empty Then
tmpStr = tmpStr & vbLf & myArray(idx)
End If
Next
obj.Value = tmpStr
tmpStr = Empty
End If
Next
End Sub
'-↑ここまで-----

(5)Sub セル内空白行削除() から End Subの間の行(どこでも結構)にカーソルを置き、
F5キーを押してマクロを実行します。
これで不要なセル内の空白行が削除されると思います。

(6)貼り付けたコードは削除して、右上の×でVisual Basic Ediorを閉じ、Excelの通常画面に戻ります。
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

できました!!!
わざわざマクロを作ってくださり、本当にありがとうございます。

お礼日時:2009/05/25 07:16

空白の行は改行が2つ入っている訳ですから


改行2つを改行1つに置き換えれば良いのでは?

編集 -> 置換 で
「検索する文字列」にCtrl-j(コントロールキーを押しながら「j」キーを押す)を2回入れます(画面上は見えませんが大丈夫)
「置換後の文字列」にCtrl-j、1回入れて、置換(すべて置換)でどうでしょうか

この回答への補足

回答ありがとうございます。

試してみたのですが、空白改行の行数がセルによっては2~4と一定ではないため、全セルに対応ができませんでした。
質問説明不足で、すみません。

補足日時:2009/05/25 07:22
    • good
    • 0

たびたびごめんなさい!


No.2です。

確かに一つずつ同じ操作を繰り返すのは大変ですよね

他の方法としては作業列を使う方法になりますが

↓の画像のようにCLEAN関数を使えばどうでしょうか?
A1セルからデータがあるとして
作業列セル=CLEAN(A1) としてオートフィルで下へコピー
但し、データが並んでいる場合ですけどね。

尚、セルの書式設定から「配置」タブで「折り返して全体を表示する」にチェックを入れておきます。

これでA列を削除してしまうと参照相手がなくなるのでエラーとなります。
そこで一工夫必要になりますが、
まず作業列全部をコピー → A1セルを選択 → 形式を選択して貼り付け → 「値」にチェックを入れてOK
これで作業列を削除しても大丈夫です。

以上、お役に立てればいいのですが、
どうも失礼しました。m(__)m
「エクセルで一つのセル内で空白の行だけ削除」の回答画像3

この回答への補足

回答ありがとうございます。

試してみたのですが、改行位置がずれてしまう箇所がありました。
今回は他の改行はそのままにしておきたいと思っています。
詳しい説明ありがとうございます。

補足日時:2009/05/25 07:14
    • good
    • 0

こんばんは!


質問の解釈が間違っていたらごめんなさい。

>一つのセル内の空白の行だけを削除したいのですが・・・

とあるので↓の画像のように、1つのセル内で空白の行があるという事でしょうか?

もしそうであれば、そのセルをアクティブにすれば
数式バーに文字が表示されますので、
「さ」の前にカーソルを移動させ、Back Spaceキー
又は「こ」の後ろにカーソルを移動させ、Deleteキー
どちらかでOKだと思います。

以上、参考になれば幸いですが、
的外れの回答なら読み流してくださいね。m(__)m
「エクセルで一つのセル内で空白の行だけ削除」の回答画像2

この回答への補足

回答ありがとうございます。

一つのセルですとその方法でできました!
もし、同様のセルがたくさんある場合、一括でできる方法はありますか?

画像をつけてわかりやすく説明してくださり、ありがとうございます。

補足日時:2009/05/24 21:59
    • good
    • 0

--------------------------------------------------------------------


 ABCDE・・・
1 あいうえお
2 かきくけこ
3 
4 さしすせそ
5 たちつてと


--------------------------------------------------------------------

消したい行の一番左端(この場合は3)をクリックで選択し、
右クリック→削除
で、消す事が出来ます。

この回答への補足

回答ありがとうございます。

質問不足でした。
同様のセルが100くらいあり、手作業でできないので
一括でできる方法を探しています。

補足日時:2009/05/24 21:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

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

改行付きテキストデータを一杯持っているエクセルファイルがあるとします。

1つのセル複数の行があります。
最後の行になんらかの文字があればOKですが、
文字が無く、空の改行だけが存在する場合があります。

このような、最後の行が空の改行のセルを見つけて、検索・置換みたいな感じで最後の空改行だけ削除する方法はあるのでしょうか。

教えて頂ければ幸いです。どうぞよろしくお願い致します。

Aベストアンサー

以下の関数はA1セルの最後の1文字が改行コードの場合は1つ前までの文字を表示し、そうでなければすべての文字を表示するものです。

=IF(RIGHT(A1,1)=CHAR(10),LEFT(A1,LEN(A1)-1),A1)

このような関数を作業用セルに展開し、その結果をコピーして、“編集”→“形式を選択して貼り付け”→“値”で貼り付ける方法はどうでしょうか。
データが1列に並んでいるのであれば、それほど手間はかからないと思います。

Qエクセルでセル内改行の1行目だけ抜き出す関数は?

エクセルでセル内で改行している文字列データがあります。
このセルの1行目だけを抜き出す関数はありますか?

Aベストアンサー

=LEFT(A1,FIND("
",A1)-1)
でできると思う。関数自体も2行になるね。これをコピーしてセルに貼り付けてもできると思うよ。
(実際には改行コードを検索してるわけですね。)

Qエクセルで特定の行を削除したいのですが。

エクセルで特定の行を一発で削除したいのですが、やり方がわかりません。
どなたか詳しい方お教えいただけませんでしょうか?

やりたいことは、B列に、特定の文字が有れば、その行全部を削除して上方向にシフトしていきたいのですが、マクロとかを使うのでしょうか?
宜しくお願いいたします。

Aベストアンサー

マクロを使う別の方法です。
XXXの部分を特定の文字に置きかえて実行してください。
また、「特定の文字があれば」というのが、その文字列を含む、というのでなくセルの値がその文字列ならば、というのであれば、LookAt:=xlPart の部分を LookAt:=xlWhole に書き換えてください。

Sub DelLines()
  Dim R As Range
  Do
    Set R = ActiveSheet.Range("B:B").Find(What:="XXX", LookAt:=xlPart)
    If R Is Nothing Then Exit Sub
    R.EntireRow.Delete
  Loop
End Sub

QEXCEL(VBA) 末尾の改行のみ削除したい

[ALT]-[ENTER]を使い、セル内を改行した文章があります。
その文章の末尾にある改行のみ削除したいのですが
ReplaceやRtrimを使うと、末尾以外の改行も削除されたりして、
思うような結果が得られません。

イメージとしては以下のようにしたいと思っております。

↓このように表示されているものを
-----------------------
本日は晴天なり。

1.AAAAA
2.BBBBB

-----------------------

↓このようにしたい
(2.BBBBB 以降にある改行のみ削除したいです。)
-----------------------
本日は晴天なり。

1.AAAAA
2.BBBBB
-----------------------

判りづらい説明で申し訳ありません。
何か良い方法はないでしょうか?

Aベストアンサー

正規表現で置換すればできると思います。
A1の文字列の末尾にある改行を削除してA2に表示します。

参照設定でVBScript Regular Expressions ?.?にチェックを入れる
Sub test()
Dim re As New RegExp
re.Pattern = "\n+$"'末尾の1個以上の改行
Range("A2") = re.Replace(Range("A1"), "")
Set re = Nothing
End Sub

または、
Sub test()
Dim re As Object
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "\n+$"'末尾の1個以上の改行
Range("A2") = re.Replace(Range("A1"), "")
Set re = Nothing
End Sub

Qセルの文字列後ろのスペース削除

Excel2007を使用しています。

意図せずに、セルの文字列の後ろにスペースが入っている事があります。

大量のセルがある為、簡単な操作にてシート単位または列の単位にて、スペースをまとめて削除をしたいと考えています。

この操作の方法を教えてください。

Aベストアンサー

既出のご回答のとおり、全体的に綺麗にするには、TRIM 関数を使います。位置や個数に関らず全てのスペースを削除するには、置換(Ctrl+H)が簡単です。

文字列の右端にあるスペースを 1 つだけ削除したい場合は、次式で可能です。スペースでない文字は、削りません。幾つも右端にスペースが連なっている場合は、次式での処理を何回か繰り返せば、そのうちに全て削除されます。なお「" "," "」という部分は、全角と半角のスペースという意味です。

=left(a1,len(a1)-or(right(a1)={" "," "}))

No.2 さんも言及されていますが、文字列の最後に改行の文字列が付いている場合、右端はスペースではないと判断されてしまうので、注意してください。改行の文字列を削除するには、CLEAN 関数を使うか、または置換ダイアログにおける Ctrl+J のキー操作により除去します。

● =clean(a1)
または
●置換ダイアログの「検索する文字列」にカーソルを置いて Ctrl+J のキーを 1 回だけ押す。このとき見かけ上は何の変化もないが、目に見えない何かが入力されているので、気にしない。「置換後の文字列」には何も入力しないまま、「すべて置換」または「置換」ボタンにより実行すると、改行が除去される。

既出のご回答のとおり、全体的に綺麗にするには、TRIM 関数を使います。位置や個数に関らず全てのスペースを削除するには、置換(Ctrl+H)が簡単です。

文字列の右端にあるスペースを 1 つだけ削除したい場合は、次式で可能です。スペースでない文字は、削りません。幾つも右端にスペースが連なっている場合は、次式での処理を何回か繰り返せば、そのうちに全て削除されます。なお「" "," "」という部分は、全角と半角のスペースという意味です。

=left(a1,len(a1)-or(right(a1)={" "," "}))

No.2 さんも言及...続きを読む

Q文字列の結合、改行、空白削除

複数のセルを参照して文字列を結合し、2つずつでCHAR(10)で改行し、未入力のセルの空白を削除する方法はありませんか?

=SUBSTITUTE(TRIM(A1&" "&B1&CHAR(10)&A2&" "&B2&CHAR(10)&A3&" "&B3&CHAR(10)
&A4&" "&B4&CHAR(10)&A5&" "&B5),"","")

現在、上記のような数式を入れて一つのセルに表示させています。

しかし、これだと後半のセルが未入力の場合、空白で表示されるため、表示させるセルの中で結合した文字列が上の方に行ってしまいます。
表示させるセルは縦横共に中央揃えにしたいのですが、何かいい方法はありませんか?

まだまだ初心者ですが、いろいろ調べた結果、とりあえず上記の式にたどり着きました。


マクロではなく関数でなんとかなればと考えております。

分かりにくい文章になってしまったかもしれませんが、よろしくお願いします。

Aベストアンサー

>いろいろ調べた結果、とりあえず上記の式にたどり着きました。
あと一歩で完成です。
提示の数式の誤りはSUBSTITUTE関数の検索文字列が""で置換文字列が""となっているので実質では何も処理されていません。
また、TRIM関数の位置が無意味な状態です。
=TRIM(SUBSTITUTE(A1&" "&B1&CHAR(10)&A2&" "&B2&CHAR(10)&A3&" "&B3&CHAR(10)
&A4&" "&B4&CHAR(10)&A5&" "&B5,CHAR(10)&" ",""))
A1:B5のセルで空欄があったときにCHAR(10)&" "が余分な文字列になりますので、この2文字を""に置き換えます。
その結果で末尾に" "が残る場合がありますので、それをTRIM関数で除きます。

Qエクセルのセルの中で改行して入力したものを分割したいんです。

エクセルの入力編集について質問です。

セルに改行(Alt&Enter)をして下記のように入力を行ったのですが、

 Γ ̄ ̄Τ ̄ ̄ ̄ ̄¬
 |番号|内容1 |
 |  |内容2 |
 L__⊥____」

データ処理に不便なために同一セル内にある「内容1」と「内容2」を下記のように別々のセルにしたいと思います。

 Γ ̄ ̄Τ ̄ ̄ ̄ ̄¬
 |番号|内容1 |
 ―――――――――
 |  |内容2 |
 L__⊥____」

もしくは、
 Γ ̄ ̄Τ ̄ ̄ ̄ ̄¬
 |番号|内容1 |
 ―――――――――
 |番号|内容2 |
 L__⊥____」

手作業にてコピーアンドペーストと行の挿入を繰り返しを行うのは、非常に時間がかかるかと思います。

そこで、なにか一括で処理できる方法はありませんでしょうか?お願いします。
また、一括ではなくても入力が簡単になる方法はありませんか?

最後になりますが、Excel 2003を利用しています。

Aベストアンサー

    A      B
1  番号A  内容A
         内容B
2  番号B  内容C
         内容D
3  番号C  内容E
         内容F

のように並んでいる場合ですが、

1.A1:B3を選択してコピーし、Wordに形式選択(HTMLかリッチテキスト)で貼り付け。
2.Wordに貼り付けた全体を選択してコピーし、Excelの別シートに貼り付け。
3.番号の列が結合された状態なので、それらのセルをまとめて選択して結合解除。

ではいかがでしょうか。

Qエクセル&メモ帳での改行の空白部分のみの削除方法

エクセルで状態( 1 )を状態( 2 )のように瞬時にしたいのですが、どのようにしたらよろしいのでしょうか?
また、状態( 3 )のように空白が不規則な場合もお願いします。

------------------------------------------
状態( 1 )

あいうえお


かきくけこ


さしすせそ


たちつてと


なにぬねの



状態( 2 )
あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの


状態( 3 )
あいうえお

かきくけこ


さしすせそ

たちつてと



なにぬねの

------------------------------------------
もし、エクセルでできないようでしたら、メモ帳、またはTeraPadでの方法でもいいです。

Aベストアンサー

Excelの場合

列を選択
編集 → ジャンプ → セルの選択
空白セル → OK
編集 → 削除
上方向にシフト → OK


TeraPadの場合

置換([Ctrl]+[R])

□ \n=改行・・・ のチェックを入れておく

検索する文字列 \n\n
置換後の文字列 \n

として、「すべて置換」

何回か繰り返えし、置換するものがなくなれば終わり。


メモ帳は・・・出来ないかも・・・(^^;

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

QExcelの下側の空行を消したい

Excelのファイルを使いまわししている時、シートの中を一回削除して他のデータをコピー&ペーストで貼り付けた場合、Ctrl+Endキーを押すと、貼り付けたデータより、ものすごい下のセルに移動してしまいます。貼り付けたデータの右下のセルに移動させたいのですが…

貼り付けたデータの下側を選択して行削除しても変わりません。

わかりづらい説明で申し訳ありません。
対処法が分かるかたがおられましたら教えてください!

Aベストアンサー

セルに何も入力されていなくても、書式変更ほか、何らかの情報が含まれている場合、それが「最後のセル」として認識されてしまいます。
これを修正するためには、誤った最後のセル位置から正しい最後のセル位置までの間の行・列を削除してやる必要があります。
下記ページを参考にしてみて下さい。
http://support.microsoft.com/default.aspx?scid=kb;ja;405492

参考URL:http://support.microsoft.com/default.aspx?scid=kb;ja;405492


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報