この人頭いいなと思ったエピソード

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

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

A 回答 (4件)

マクロを使う別の方法です。


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
    • good
    • 27
この回答へのお礼

ご回答いただきましてありがとうございます。
まさしく一発削除!
できました。
ありがとうございました。

お礼日時:2007/01/24 19:49

もしB列に「特定の文字」を含む文字列があった場合という意味でしたら、こういうのはマクロの出番ですね。


以下の手順を試してみてください。

1.Altキー+F11キーでVisualBasicEditorを呼び出します。

2.メニューから挿入、標準モジュールで出てきたコードウィンド(右側の白い広い部分)に以下のコードをコピペします。

ただし、以下の"*特定の文字*"の中の「特定の文字」は、実際のものに変えてください。

'*****ここから下をコピペ*****

Sub test01()
With ActiveSheet
x = .Cells(.Rows.Count, "B").End(xlUp).Row
For i = x To 1 Step -1
If .Cells(i, "B").Value Like "*特定の文字*" Then
.Rows(i).Delete
End If
Next
End With
End Sub

'*****ここより上までをコピペ*****

3.Alt+F11キーでワークシートへもどります.

4.メニューから、ツール、マクロ、マクロで出てきたマクロ名(test01)を選択して実行

いかがでしょう?
    • good
    • 6
この回答へのお礼

ご回答いただきましてありがとうございます。
詳しくご説明まで頂、大変わかりやすかったのですが、
私のやり方が悪いのか、マクロを実行いたしましたが、何もおこりませんでした。なぜでしょう。
お忙しい中ありがとうございました。

お礼日時:2007/01/24 19:47

データ→フィルタ→オートフィルタを用いて消去したい行のみを表示すれば、まとめて消去できます。

    • good
    • 10
この回答へのお礼

ご回答いただきましてありがとうございます。
こちらは、シンプルで簡単ですね。
こういうエクセルの使い方もあるのですね。
ありがとうございました。

お礼日時:2007/01/24 19:42

 並び替えを使う方法です。


 データはA列とB列まで入っているとし、「特定の文字」を「対象」とします。

1)C列に頭から順に、1,2,3,4と下まで入力していきます。
2)D1セルに「=IF(ISNUMBER(FIND("対象",B1)),"要削除","")」と入力し、以下コピー
3)シート全体を選択後、D列をキーにして降順に並び替え。 ⇒上側に「要削除」が集まる。
4)D列に「要削除」とある行を選択して、行削除。
5)シート全体を選択後、C列をキーにして昇順に並び替え。
6)C列とD列を削除。
    • good
    • 4
この回答へのお礼

ご回答いただきましてありがとうございます。
なるほど対象文字の列に印をつけて並べ替えて削除ですね。
こういったやり方もあるのですね、大変参考になりました。
ありがとうございました。

お礼日時:2007/01/24 19:40

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

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


おすすめ情報