Excel。VBA。セル内の空白を取り除きたいけど、どうしたらいい
<Excel VBA : Replace>
不要な空白がセル内にあるデータが結構あるようなので、目視で確認をして取り除くのも大変です。
また、数式で取り除いたデータを別のセルで算出し、その後、戻すというのも、少し面倒です。
そこで、今回は、Excel VBAで対応してみようと思います。
次のデータを用意しました。
セルの内側に全角1文字のデータや、
全角1文字だと思っていたら、半角2文字だったなど、様々なケースが考えられます。
そのため、何文字目データが空白で、その空白が全角だったら…というような条件で考えてしまうと、大変です。
そこで、置換のReplace関数をつかって解決することができます。
次のようなプログラム文をつくってみました。
Sub セル内空白()
Dim i As Long
Dim lastrow As Long
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
For i = 2 To lastrow
Cells(i, "b") = Replace(Cells(i, "b"), " ", "")
Cells(i, "b") = Replace(Cells(i, "b"), " ", "")
Next
End Sub
では、実行してみましょう。
このように、セル内の空白を取り除くことができました。
では、プログラム文を確認しておきましょう。
最初は、変数宣言です。
Dim i As Long
Dim lastrow As Long
繰り返し数を求めます
lastrow = Cells(Rows.Count, "a").End(xlUp).Row
For文をつかって繰り返し処理をしております。
For i = 2 To lastrow
Cells(i, "b") = Replace(Cells(i, "b"), " ", "")
Cells(i, "b") = Replace(Cells(i, "b"), " ", "")
Next
繰り返している処理は、2つです。
Cells(i, "b") = Replace(Cells(i, "b"), " ", "")
半角空白だったら、何もない状態に置換(Replace)する という文です。
Cells(i, "b") = Replace(Cells(i, "b"), " ", "")
全角空白だったら、何もない状態に置換するプログラム文です。
なお、Excelには、Substitute関数がありますが、Excel VBAだと、WorksheetFunctionでつかわないといけません。
単独ではつかうことができません。