[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA セルの空白削除を高速化したい』(みや)
セルの中の空白を削除するコードなのですが、データが多いせいなのか非常に時間がかかります。高速化する方法はないでしょうか?
ちなみに消したい空白はセルの文字(半角・全角あり)の後側だけです。
前側には空白はありません。
データ上の空白には半角と全角が存在します。
(データ例)アンダーバーが空白に相当します。
ACB1111____
りんご___
SUB 空白削除()
Application.ScreenUpdating = False Application.Calculation = xlCalculationManual
Dim a As Range Dim b As Long Dim c As Long Dim d As Long
b = Range("A2").End(xlDown).Row
For d = 1 To 5
For c = 2 To b
Cells(c, d).Select
For Each a In Selection
a.Value = Replace(a.Value, " ", "") '半角の空白削除
a.Value = Replace(a.Value, " ", "") '全角の空白削除
Next a
Next c
Next d
Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic
END SUB
< 使用 Excel:unknown、使用 OS:unknown >
こんなんでどうですか?
Sub 空白削除()
Dim w As Variant, i As Long, j As Long
w = Range("E2", Cells(Rows.Count, "A").End(xlUp))
For i = 1 To UBound(w, 1)
For j = 1 To 5
w(i, j) = Replace(Replace(w(i, j), " ", ""), " ", "")
Next j
Next i
Range("A2").Resize(UBound(w, 1), UBound(w, 2)).Value = w
End Sub
(稲葉) 2019/03/14(木) 15:07
スペースがあるのは文字の後だけのようなのでTrimでもいいかも?
w(i, j) = Replace(Replace(w(i, j), " ", ""), " ", "") ↓ w(i, j) = Trim(w(i, j))
稲葉さん勝手にすみません。 (bi) 2019/03/14(木) 15:22
ループ無し...
Sub test()
With Range("a1", Range("a" & Rows.Count).End(xlUp)).Resize(, 5)
.Value = Application.Trim(.Value)
End With
End Sub
(seiya) 2019/03/14(木) 15:24
コード変更 15:29
そういえば、Trimで十分すね・・・ (稲葉) 2019/03/14(木) 15:56
ありがとうございます。
Trimで結構早くなりました。
seiyaさん
ループ無くすとこんなに早くなるんですね。
勉強になりました。
(みや) 2019/03/15(金) 13:20
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.