職場で使っているデータの抽出がなにかうまくいかないなと思っていて探っていたら、抽出対象のデータにスペースが混ざっていました。
マクロで抽出したら、スペースが混ざっていると別データとしてはじかれてしまいます。
※手作業だと、スペースに関係なく抽出してくれます。
trim関数を使って、文字列の前後のスペースを削除するサンプルコードになっています。
文字列と文字列の間を削除したいときは、trim関数を他の関数に置き換えて使用してください。
苦戦した点は、セルを取り込んだ配列が2次元配列になるということがピンとこなかったこと。
arr(i, 1) = Trim(arr(i, 1)) と書かないといけないところをarr(i) = Trim(arr(i)) と書いてしまい、【インデックスが有効範囲にありません。】とエラーが出て、しばらく解消ができませんでした。
配列がどんな状態になっているか、ローカルウインドウを見て確認すればもっと早く気がつけたと思うので今後、配列でつまった時はローカルウインドウを確認しようと思います。
サンプルコード
Sub trm()
Dim arr() As Variant ‘配列を宣言
Dim r As Long ‘最終行の数値変数を宣言
Dim i As Long ‘ループ変数を宣言
r = Cells(Rows.Count, 1).End(xlUp).Row ‘1列目の最終行を取得
arr = Range(Cells(2, 1), Cells(r, 1)) ‘2行目から最終行までを配列取り込み
For i = 1 To r – 1
arr(i, 1) = Trim(arr(i, 1)) ‘配列文字データから前後のスペースを削除
Next i
Range(Cells(2, 2), Cells(r, 2)) = arr ‘2列目にスペースを削除したデータを貼付け
End Sub
コメント