人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: keijun5145
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

質問者から

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


1 ● oich

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


2 ● マルリ

全角・半角スペースデータの削除をしたいということなので、抽出ではなく、単純に項目全体に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

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ