[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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.