VBAのことで質問です。

一覧表の特定の列に半角スペースまたは全角スペースのみで入力されているものがあればその行をClearContentsをしたいと思っています。
Criteria1に"* *"や"* *"と入力するとスペースが含まれる全てのレコードが抽出されてしまいます。
色々な組み合わせを作ってFor文で繰り返し行うくらいしかないのでしょうか?

192,000行もあるので、なるべくFor文は使いたくありません。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2015/05/24 13:45:05
id:keijun5145

※Excelのバージョンは2010(32bit)です。

回答2件)

id:oich No.1

回答回数20ベストアンサー獲得回数3

replace関数を2回使って、" "と" "を""に置き換えてあげて、結果が""の場合のみClearContentsすればよいのでは?

id:hell0w0rld No.2

回答回数1ベストアンサー獲得回数0

全角・半角スペースデータの削除をしたいということなので、抽出ではなく、単純に項目全体にTrimをかけると良いのではないでしょうか。
VBAのTrimは前後の全角スペース、半角スペースともに削除します。
19万件のFor文ではありますが、画面更新をしないようにすれば、数分程度で処理できるのではないかと思います。


Sub Sample()
MsgBox "Start"
Application.DisplayAlerts = False
Dim oA As Range
Dim oB As Range
Set oA = Range("A1:A192000")
For Each oB In oA
''(1)スペース入力されているセルのみ処理を行う
'If oB.Value <> "" And Trim(oB.Value) = "" Then
' oB.ClearContents
'End If
''(2)単純に全てのデータのTrimを行う
oB.Value = Trim(oB.Value)
Next
Set oA = Nothing

Application.DisplayAlerts = True
MsgBox "End"

End Sub

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません