• ベストアンサー

エクセルで、一括削除について。

エクセルでの質問です。 製品修理番号が約3万件程、入っておりましてその中のある番号のものだけ削除したいのですが、どの様にして削除して良いのか御助言を頂ければと思います。 A列~C列までそれぞれに1万件づつデーターが入っております。 製品修理番号の末尾が数字のものだけ削除したいのです。 例:AB-001-cdf-ad5この様になっております。末尾の数字は0~9までです。 1件づつ確認して削除していくのも大変時間がかかってしまいますので出来れば一括で削除したいのですが何かしら方法があるのでしょうか?御手数をお掛け致しますがどちら様か御助言くだされば幸いです。宜しくお願い致します。ちなみにエクセルは、2007を使用しております。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.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

fuga350
質問者

お礼

ありがとうございます。 こう言った方法があるのですね! 大変参考になりました。挑戦してみたいと思います。

その他の回答 (1)

  • mcsp
  • ベストアンサー率46% (6/13)
回答No.1

 こんにちは。  削除というのはセル内を空白状態にするだけでよろしいのでしょうか? ざっくりですがこんなのではどうでしょうか?実行する前に必ず ファイルは保存しておいて下さい。 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

fuga350
質問者

お礼

ありがとうございます。 実は、セル自体を削除したいのです。説明不足で申し訳ございませんでした。でもとても参考になります。似たような事、がありますので 実行してみます。御手数をお掛け致しまして恐縮です。

関連するQ&A