[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAで条件によってセルの値を削除する方法』(WWWWW)
【Excel2003,Windows Vista】
下のような表があります。 A B C D E 1 7月分処理内容 2 NO. 判別 名前 型 作業番号 3 01 可 ASERT 100 51102 4 02 不可 RTYUI 100 51103 5 03 不要 ZXCCV 200 51104 6 04 可 YUIOP 500 51105
表の編集をしていて、以下のような条件でデータ削除をしたいと思っています。
1、B列の値が「不要」だったら、E列の値を削除する。 2、C列の値が「Aから始まるもの(A????)」だったら、E列の値を削除する。 (C列にはいる値は全て5桁の文字列です。)
Dim 行番号 As Integer 行番号 = 3 Do Until Cells(行番号, 2).Value = "" If Cells(行番号, 2).Value = "不要" Then Cells(行番号, 5).Value = Delete End If 行番号 = 行番号 + 1 Loop
1の方の条件ですと、こちらで実行したら問題なく削除されました。 が、 2の条件の方をどのように書いたらいいのかわからなく困っています。
1の方と同じように・・・
Do Until Cells(行番号, 2).Value = "" If Cells(行番号, 3).Value = "A????" Then Cells(行番号, 5).Value = Delete End If 行番号 = 行番号 + 1 Loop
このように設定してみたところ、うまく動きませんでした。 うまく動かなかった、と言うよりは、エラーなく終了するが、C列の値が 「Aから始まるもの(A????)」の行のI列が削除されないで終わってしまいました。
実行後は、このように編集されたいです。
A B C D E 1 7月分処理内容 2 NO. 判別 名前 型 作業番号 3 01 可 ASERT 100 <=削除された 4 02 不可 RTYUI 100 51103 5 03 不要 ZXCCV 200 <=削除された 6 04 可 YUIOP 500 51105
処理として、マクロを使って表を編集していて、その一部になるので、関数ではなくVBAでどうにか編集したいのです。 よろしくおねがいします。
If Cells(行番号, 3).Value Like "A????" Then か If Cells(行番号, 3).Value Like "A*" Then か If Left(Cells(行番号, 3).Value,1) = "A" Then か If InStr(Cells(行番号, 3).Value,"A") = 1 Then でどうでしょうか。
蛇足ですが下記もおかしいので Cells(行番号, 5).Value = Delete ↓ Cells(行番号, 5).Value = "" に修正でしょうか。 (Mook)
Sub 削除()
Dim i As Long Dim lngRow As Long
lngRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lngRow If Cells(i, 2) = "不要" Or Cells(i, 3) Like "A*" Then Cells(i, 5).Clear Next
End Sub
みたいな感じでも・・・。(抜けている箇所があったので修正しました)
(se_9)
Mookさん、 se_9さん、
ありがとうございます。 すみません、別の仕事が入ってしまったので、少し時間がかかってしまいますが、 時間空き次第教えていただいたものを実行してみたいと思います。 またご報告させていただきますので、よろしくお願いします!!
(WWWWW)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.