アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル2000で、社員台帳から特定の人物だけ削除しようと思いマクロを
組んだのですが、どうもうまくいきません。
社員には全員00から99の2桁のコードがついています。(列Aにあります)
2桁のコードが00の人物だけ削除したいのですが。
次のようなマクロを組んだのですが、どこがおかしいのでしょうか?
とりあえず、20行程度処理しようと思います。
Range("A2").Select
For Each セル In Range("A2:A20")
If セル = "00" Then Selection.EntireRow.Delete
Next

A 回答 (4件)

リスト内を選択して「データ」-「フィルタ」「オートフィルタ」をクリック。


A列に▼が出来るのでそれをクリックして「00」を選択すると「00」のものだけが
抽出されます。
別の列をキーにして絞り込むなりして行削除すれば良いのでは?
(A2を選択してCtrl+Shift+Endで抽出した範囲を選択して右クリック行削除)

↑が出来るのであればマクロの記録でこの手順を記録すればマクロになります。

99のときなら99に変えてマクロを作れば良いのでは?
    • good
    • 0

>それから、End If の部分でエラーで落ちました。

「End If に対する If がない」
>というメッセージでした???

これは、うちでは、再現しません。
再度ご確認を

>と、いう訳で、00のコードを持つ社員が複数名おり、かつ連続して出てくる
>可能性があります。

A2とA3が00の場合、A2が00なので、A2の行を削除しま
すが、このため、A3だったセルはA2になってしまうの
で元A3であるA2の00は処理されないことになってしま
います。
という訳で、やはり後ろからやらないと駄目だと思い
ます。

Dim y As Long
For y = 20 To 2 Step -1
With Cells(y, 1)
If .Value = "00" Then
.EntireRow.Delete
End If
End With
Next

この回答への補足

End If でエラーが発生する件につきましては、私の記述誤りでした。
記述後に、きちんとデバッグすればよかったんですね。
大変に失礼致しました。

補足日時:2001/06/06 08:27
    • good
    • 0
この回答へのお礼

たいへん、うまくいきました。ありがとうございました。また、お礼が遅くなってしまって、すいません。

お礼日時:2001/06/22 17:39

こんにちは



 以下のページがご参考になるのでは?

【エクセル技道場】-マクロ-行の削除
http://www2.odn.ne.jp/excel/waza/macro.html#SEC6

参考URL:http://www2.odn.ne.jp/excel/waza/macro.html#SEC6
    • good
    • 0

Selection.EntireRow.Deleteに問題があります。


選択されている行を削除しますから、A2のある2行目
が削除されてしまいます。

For Each セル In Range("A2:A20")
If セル = "00" Then
セル.EntireRow.Delete
End If
Next

こんな、感じでどうでしょう。
なお、社員台帳と言うことで、00の人が2回出てくる
ことはないと思いますが、連続で00が出てくると2つ
目の00は削除されませんので、ご注意ください。
(後ろから検査したほうがいいと思います。)

この回答への補足

arataさん、いろいろとありがとうございます。
実は、この2桁のコードは社員固有のIDではないのです。
(書き忘れてすいません)
と、いう訳で、00のコードを持つ社員が複数名おり、かつ連続して出てくる
可能性があります。
それから、End If の部分でエラーで落ちました。「End If に対する If がない」
というメッセージでした???

補足日時:2001/06/05 16:29
    • good
    • 0

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