11/03/2024

Excel。VBA。セル内の空白を取り除きたいけど、どうしたらいい【Blank Cells】

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でつかわないといけません。


単独ではつかうことができません。