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【Excel】選択したすべてのセルを絶対参照にする方法

ExcelでF4を押せばセルを絶対参照に変えられますが、複数のセルを同時に絶対参照に変える方法を教えてください。

Aベストアンサー

こんばんは!
一例ですが・・・
Ctrlキーを押しながら、範囲指定(飛び飛びでも構いません)した後に
F4キーを押してみてください。
これでOKかと思います。m(__)m

Qエクセル2013マクロ、空白が行以上の場合、空白行を1行だけ残したい

エクセル2013のマクロを使っています。

複数行ある空白行が飛び飛びで含まれるシートですが、ちょっとまだらで困っています。

A1~L15は、ほとんどのセルでデータあり。

A16~L25は、ほとんどのセルでデータあり。
ここが中途半端なんですが、J26~L26にデータが入っています。

そして、A35~L45は、ほとんどのデータ有り。
J46~L46にデータ有り。

というパターンがしばらく続きます。

この、J~Lは、その上の表の合計が入っています。ちょっとだけ出っ張ってます。

A列にデータがあるものであれば、ネットの情報で対応できるのですが、
全てデータがあるJ,K,Lで同じことを試しても、うまく空白行の削除ができません。

https://oshiete.goo.ne.jp/qa/4006176.html

どういうマクロで対応が可能でしょうか。

手動でセル指定するものではなく、空白の行やセルにデータが入っているものでも、
行列が増えても減っても対応できる内容でお願いします。

大雑把な画像を付けたので、ご理解いただければ幸いです。

エクセル2013のマクロを使っています。

複数行ある空白行が飛び飛びで含まれるシートですが、ちょっとまだらで困っています。

A1~L15は、ほとんどのセルでデータあり。

A16~L25は、ほとんどのセルでデータあり。
ここが中途半端なんですが、J26~L26にデータが入っています。

そして、A35~L45は、ほとんどのデータ有り。
J46~L46にデータ有り。

というパターンがしばらく続きます。

この、J~Lは、その上の表の合計が入っています。ちょっとだけ出っ張ってます。

A列にデータがあるも...続きを読む

Aベストアンサー

リンク先の"A"を"J"に変えただけで良いのでは?
Sub test01()
 Dim x As Long, i As Long
 With ActiveSheet
 x = .Cells(Rows.Count, "J").End(xlUp).Row
 For i = x To 2 Step -1
   If .Cells(i, "J") = "" And .Cells(i - 1, "J") = "" Then
     .Cells(i, "J").EntireRow.Delete Shift:=xlUp
   End If
 Next i
 End With
End Sub

Q別シートのセルを絶対参照にする

office2007、Excelで別シートのセルを絶対参照する方法を教えて下さい。
セルに「=シート名セル番地」を力した場合は、
セル番地を$で絶対参照にしても
参照先シートのその上に行を挿入すると
$A$5を指定していても行を挿入した場合は
自動的に$A$6になってしまいます。
別シートに行を挿入しても参照先のセルを固定する方法を教えて下さい。

Aベストアンサー

INDIRECT関数なら、文字列として範囲を指定できるので、行挿入や列挿入で勝手に指定範囲が変わることはありません。

例:
 INDIRECT(参照文字列,参照形式)
 と、使います。
 =INDIRECT("Sheet1!A1",TRUE)


※ INDIRECT関数の詳細は Excelのヘルプや解説サイトなどで確認してください。

Qエクセル セル内の文字列を空白から空白まで抽出したい。

一つのセルに入っている文字列を複数のセルに分割したいのですが良い方法が見つかりません。

具体的には
「商品名 単価 数量 金額」が一つのセルに入っているのですが、これをそれぞれ「商品名」「単価」「数量」「金額」というように別のセルに分けたいのです。
条件は次です。
・文字列の区切りは空白(スペース)。
・商品名や金額などそれぞれの文字列の長さは決まっていません。
・商品名には名称の中に空白が使われている場合があります、その数も決まっていません。

以上です。いろいろ関数を使ってやってみたのですが、どうもうまくいきません。
どなたか良い方法がありますでしょうか、よろしくお願いいたします。

Aベストアンサー

No.2です。
分割されなくなって、単にB列にコピーとなってしまったのは、ヘッダ部分だけでなく、データ行も全てそうなってしまったのでしょうか?

ヘッダ行かどうか判断するのに「単価」「数量」「金額」であるべきところが「数値であるか」という処理を追加したのですが、データ行のデータが単純に数字でなくて@100とか1000個などとなっていると、ヘッダと見なされてしまいます。

とりあえず、その処理を抜いてみました。ヘッダ部分に空白が3つ以上あると他のデータ行と同様に分割され、空白が2つ以下ならそのままB列に転記されてしまいますが、それでOKならこれでいけるかも。

Sub SplitItems()
  Dim r As Range
  Dim c As Variant
  Dim i As Integer
  With Worksheets("Sheet1")
    For Each r In .Range("A1", .Range("A1").End(xlDown))
      c = Split(r, " ")
      If UBound(c) < 3 Then
        r.Offset(0, 1).Value = r.Value
      Else
        r.Offset(0, 1).Value = ""
        For i = 0 To UBound(c) - 3
          r.Offset(0, 1).Value = Trim(r.Offset(0, 1).Value & " " & c(i))
        Next
        r.Offset(0, 2).Value = c(UBound(c) - 2)
        r.Offset(0, 3).Value = c(UBound(c) - 1)
        r.Offset(0, 4).Value = c(UBound(c))
      End If
    Next
  End With
End Sub

No.2です。
分割されなくなって、単にB列にコピーとなってしまったのは、ヘッダ部分だけでなく、データ行も全てそうなってしまったのでしょうか?

ヘッダ行かどうか判断するのに「単価」「数量」「金額」であるべきところが「数値であるか」という処理を追加したのですが、データ行のデータが単純に数字でなくて@100とか1000個などとなっていると、ヘッダと見なされてしまいます。

とりあえず、その処理を抜いてみました。ヘッダ部分に空白が3つ以上あると他のデータ行と同様に分割され、空白が2つ以下...続きを読む

Qexcel 割引率のセルを絶対参照した場合の式は?

下記で、D2の15%のセルを絶対参照にした場合、式はどのようにすればいいでしょうか。
例)
絶対参照にするセル D2 15%(割引率) 
          B4~B7 元値
          C4~C7 結果 
自分では・・・ 
C4=B4-B4*$D$2 で入力してみたのですが、他に式はありますか。

絶対参照にしない場合は、C4=B4*(1-0.15)でやってみました。
いずれも自信はありません。
よろしくお願いします。

Aベストアンサー

一例です。
小数点以下四捨五入、=ROUND(B4*(1-$D$2),0)
小数点以下切り上げ、=ROUNDUP(B4*(1-$D$2),0)
小数点以下切り捨て、=ROUNDDOWN(B4*(1-$D$2),0)

Q選択範囲内の空白セルだけ抜き出すマクロでエラー(OfficeXP)

OfficeXPのExcelを使用しています。

選択した範囲に空白のセルがあったらそこにスペースを入力するというマクロで、下記の一行だけ書きました。
Sub Test()
Selection.SpecialCells(xlCellTypeBlanks).Value = " "
End Sub

空白のセルが有った場合は問題ないのですが、無いときにエラーになります。
どのようなエラー処理をすればこれを回避出来るのでしょうか?教えて下さい。

Aベストアンサー

StudyVBAさん、こんにちは。

>マウスで範囲指定した場合は、selection.SepcialCells...ではなく、
>For each の方がベターなのでしょうか

実は、書いた時点では感覚的なものだったので、検証してみました。
 SpecialCells(xlCellTypeBlanks)
というのは、Excelライブラリの中の、Rangeクラスの配下(メンバ)なんですが、この動作には、漠然とした部分があると思うのです。(実際に、私は使わないのです。)

例えば、
 ActiveSheet.Cells.SpecialCells(xlCellTypeBlanks).Select

としてみると、
 ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Select

とたぶん、同義だと思いますが、いかがでしょうか?
Selection というのは、あくまでも、マウス等によるユーザー選択の部分ですね。
ということは、そのUsedRangeとは違いが出ます。

こんなテストをしてみました。

新しいシートに、いくつか、値を点在させて、その最終セルを越えて、マウス選択してみます。

Sub Test_UsedRange_Selection()
Dim r As Range
Dim SelectedRow As Long, UsedRow As Long
Dim SelectedColumn As Integer, UsedColumn As Integer
'
Set r = Selection
With ActiveSheet
 SelectedRow = r.Cells(r.Count).Row
 SelectedColumn = r.Cells(r.Count).Column
 UsedRow = .UsedRange.Cells(.UsedRange.Count).Row
 UsedColumn = .UsedRange.Cells(.UsedRange.Count).Column
End With
If SelectedRow > UsedRow Then
  MsgBox "選択した行は、UsedRangeよりも大きいです。"
End If
If SelectedColumn > UsedColumn Then
  MsgBox "選択した列は、UsedRangeよりも大きいです。"
End If
End Sub

Sub Test()
Set r = Selection
 With r.Cells.SpecialCells(xlCellTypeBlanks)
   .Select
   '=" "
 End With
End Sub

そうすると、UsedRange よりも先の部分の Selection は、Select しないのではないでしょうか?ですから、SpecialCells(xlCellTypeBlanks)の範囲というのは、その検索範囲がかならず、UsedRange内と明確ではない限りは、For Each ~ In Selection のほうが、はっきりとしているのではないかと思います。

StudyVBAさん、こんにちは。

>マウスで範囲指定した場合は、selection.SepcialCells...ではなく、
>For each の方がベターなのでしょうか

実は、書いた時点では感覚的なものだったので、検証してみました。
 SpecialCells(xlCellTypeBlanks)
というのは、Excelライブラリの中の、Rangeクラスの配下(メンバ)なんですが、この動作には、漠然とした部分があると思うのです。(実際に、私は使わないのです。)

例えば、
 ActiveSheet.Cells.SpecialCells(xlCellTypeBlanks).Select

としてみると...続きを読む

Qエクセルで複数のセルの絶対参照を一度に外す方法

宜しくお願いします。

複数のセルに例えば 

”$A3$*D3”

という式が入っていて、一度に

”A3*D3”

にする方法というのはあるのでしょうか?

私はいちいちセルをアクティブにして、F4キーで絶対参照を
外すというのを各セルごとに行っているのですが、
一度に置換か何かで”$A3$”を”A3”にすることは出来ないでしょうか

教えてください。
宜しくお願いします。

Aベストアンサー

解っているんでは、??。
編集⇒置換⇒検索する文字 $
置換する文字 (空白にして) カーソルをここに入れる(あわせるとも言う?) ⇒全て置換

これで、終わりです。

Qエクセルでデータがある部分だけ範囲内の空白も込みで罫線で囲いたいです。

エクセルでデータがある部分だけ範囲内の空白も込みで罫線で囲いたいです。

再質問です。
エクセルのファイルを開いて、データのある部分だけを罫線で囲みたいです。
データーは常に列数も行数も違います。
また空白の行があったり、列があったり一部のセルが空白だったり。
ここで教えてもらった記述があるのですがその時の質問は
(データのある部分だけ囲みたい)としたので、それに対応した記述の為

例えば
A1からM1まではデータがあり、
A2からM2までは空白
A3からM3まではデータがある場合とか

A1からM100までぎっしり埋まっている場合で
E列はE1からE100まで空白とか、

A1からM100までぎっしり埋まっている場合で
セルB5、C8、D12、E13だけは空白だと
空白部分は囲ってくれません。

又は
A1からM1まではデータがあり、
A2からM2までは空白
A3からM100まではデータがある場合とかだとA1からM1だけ囲まれますが
A2からM100までは囲まれません。

これはある意味(データーのある部分だけ)と質問したので仕方有りません。

自分でやるとマクロの記録しかできず以下のようになってしまいます。
これですと上記例でデータはA1からM100までで
3行目がなかったり、D列がなかったり、所々のセルに空白が
有りますが、罫線で囲うのはあくまでA1からM100までなのですが
以下の記述ではシート全てが罫線で囲まれてしまいます。
また対象のファイルは行数や列数が決まっているわけではないのです。
(100行かもしれないし1,000行かも知れない、C列までかも知れないし
 Z列までかもしれません。
 1から10行までデータがあって100行空白で101行目からまたデータというほど
 の空白があるわけでもありません。)

どうすれば途中に空白があるデータの先頭から最後だけを囲えるのでしょうか?
空白も対象だとしてしまうとデーターの終わりがわからないから、
シート全部を囲うしかないのでしょうか?

Sub Macro1()
Cells.Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Range("A1").Select
End Sub

エクセルでデータがある部分だけ範囲内の空白も込みで罫線で囲いたいです。

再質問です。
エクセルのファイルを開いて、データのある部分だけを罫線で囲みたいです。
データーは常に列数も行数も違います。
また空白の行があったり、列があったり一部のセルが空白だったり。
ここで教えてもらった記述があるのですがその時の質問は
(データのある部分だけ囲みたい)としたので、それに対応した記述の為

例えば
A1からM1まではデータがあり、
A2からM2までは空白
A3からM3まではデータがある場合とか

A1からM10...続きを読む

Aベストアンサー

 
---------------------------------- 
With ActiveSheet.UsedRange.Borders
  .LineStyle = xlContinuous
  .Weight = xlThin
  .ColorIndex = xlAutomatic
End With
----------------------------------

実際は、行、列の最終を調べてやるべきです。
 

Q多数のセルに入力してある数式を$を使わずに絶対参照コピーする方法

 初めて質問いたします。
 技術系計算をエクセルで組み立てる際、多数のセルに入力されている相当長い数式等を$を使用することなくコピーする方法を教えてください。
 以前他のサイトで、単にコピーしたいセルを選びCtrl+C Ctrl+V 程度の操作で一括絶対参照コピーができる(コピーした先のセル内の数式にも$がつていなかったように記憶しています)を覚えたのですがその操作方法を忘れてしまいました。 
 多数のセルを対象にしていますのでF4 キーによる変換では相当な時間がかかるので投稿しました。
 宜しくお願いいたします。

Aベストアンサー

こんばんは。

#3 の回答者ですが、#2さんのテクニックが上手く行かないということで、あえてそう書いたまでなのです。

>以前他のサイトで、単にコピーしたいセルを選びCtrl+C Ctrl+V 程度の操作で一括絶対参照コピーができる(コピーした先のセル内の数式にも$がつていなかったように記憶しています)を覚えたのですがその操作方法を忘れてしまいました。 

私は、何年も掲示板を読んでいますから、ほとんどは見ているつもりではいるものの、この種のご質問は難しいですね。私の知らないものもあるのかもしれませんが、現実に困っていない状況から、はっきりしていない記憶の中から、他人の独特のテクニックを導きだすからです。

以下の方法も定番とはいえません。

一旦、文字化させておいて、貼り付け、それを「区切り位置」ボタンで、一気に数式化させるというテクニックかもしれません。

具体的には、数式を置換で、「=」 --> 「'=」 と全体を全て置換します。そして、その範囲をコピーして、目的の場所に貼り付け、「区切り位置」で、「完了」をクリックします。
コピー元も同じく、「区切り位置」で元に戻します。ただし、これは一列に限ります。

他にも同種の特殊なテクニックもありますし、概ね、マクロ化も可能ですが、こういうことは、めったに必要ありません。実は、左側の数式は、右の数式と等価ですから、数式はひとつだけでよいわけです。

 A1方式  R1C1方式
--------------------------
=B1+C1   =RC[1]+RC[2]
=B2+C2   =RC[1]+RC[2]
=B3+C3   =RC[1]+RC[2]

こんばんは。

#3 の回答者ですが、#2さんのテクニックが上手く行かないということで、あえてそう書いたまでなのです。

>以前他のサイトで、単にコピーしたいセルを選びCtrl+C Ctrl+V 程度の操作で一括絶対参照コピーができる(コピーした先のセル内の数式にも$がつていなかったように記憶しています)を覚えたのですがその操作方法を忘れてしまいました。 

私は、何年も掲示板を読んでいますから、ほとんどは見ているつもりではいるものの、この種のご質問は難しいですね。私の知らないものもあるのか...続きを読む

Qセル内での2行目(1文字目)空白の入れ方

初歩的な質問なのですが、エクセルで一つのセル内で改行(Alt+Enter)し、2行目の1文字目を空白にしたいのですがどうすればいいのでしょうか?
こういう風に打ちたいのですが…

ああああああ
 あああああ
ああああああ

使用しているのはエクセル2002で単にスペースを押しても空白が入りません。。

Aベストアンサー

 不思議ですね。私も長年エクセルを使っていますが、そのようなことは1度もありませんでした。とりあえず応急措置で、カット&ペーストで空白を挿入したらどうでしょうか。


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

人気Q&Aランキング

おすすめ情報