- ベストアンサー
エクセルで、一括削除について。
エクセルでの質問です。 製品修理番号が約3万件程、入っておりましてその中のある番号のものだけ削除したいのですが、どの様にして削除して良いのか御助言を頂ければと思います。 A列~C列までそれぞれに1万件づつデーターが入っております。 製品修理番号の末尾が数字のものだけ削除したいのです。 例:AB-001-cdf-ad5この様になっております。末尾の数字は0~9までです。 1件づつ確認して削除していくのも大変時間がかかってしまいますので出来れば一括で削除したいのですが何かしら方法があるのでしょうか?御手数をお掛け致しますがどちら様か御助言くだされば幸いです。宜しくお願い致します。ちなみにエクセルは、2007を使用しております。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
関数+フィルタ VBA などの方法がある 例データ A列 B列 AB-001-cdf-ada AB-001-cdf-ad6 1 AB-001-cdf-ad7 1 AB-001-cdf-adx AB-002-cdf-adQ AB-003-cdf-a13 1 B列の式は =IF(ISNUMBER(RIGHT(A1,1)*1),1,"") を式を複写したもの。 1以外をフィルタで捉えればよい。 ただB、C列にもA列と同じようなデータが入っているようなので 右に列挿入し上記を行い、データーフィルターフィルタオプションの設定を3列分3回行はざるを得ない。 こういうデータの持ち方はExcelでは不可。 ーー VBAなら 最終行を捉え、最終行から上に向かって、A列の値のRight1桁が数字(IsNumeric)なら、Shift:=xlUp のセル削除を行えばよい。 Sub test01() d = Range("A65536").End(xlUp).Row MsgBox d For j = 1 To 3 For i = d To 1 Step -1 x = Right(Cells(i, j), 1) If IsNumeric(x) Then Cells(i, j).Delete Shift:=xlUp End If Next i Next j End Sub
その他の回答 (1)
- mcsp
- ベストアンサー率46% (6/13)
こんにちは。 削除というのはセル内を空白状態にするだけでよろしいのでしょうか? ざっくりですがこんなのではどうでしょうか?実行する前に必ず ファイルは保存しておいて下さい。 Sub ClearData() Dim myRg As Range Dim wkRg As Range Dim wkStr As String Worksheets(1).Select 'とりあえず一番左にあるシートを指定 Set myRg = Range("A2:C10001") 'セルの範囲を指定 For Each wkRg In myRg wkStr = Right(wkRg.Value, 1) If IsNumeric(wkStr) = True Then wkRg.ClearContents End If Next Set myRg = Nothing End Sub
お礼
ありがとうございます。 実は、セル自体を削除したいのです。説明不足で申し訳ございませんでした。でもとても参考になります。似たような事、がありますので 実行してみます。御手数をお掛け致しまして恐縮です。
お礼
ありがとうございます。 こう言った方法があるのですね! 大変参考になりました。挑戦してみたいと思います。