Excelで特定文字以前を削除したいときはないでしょうか。
けど、そんな中で悩むことは、
・Excel VBAで特定文字以前を削除したいが方法がよくわからない
ですよね。
今回はそんなお悩みを解決する
・Excel VBAで特定文字以前を削除する方法
についてまとめます!
もくじ
Excelのワークシート関数で特定文字以前を削除する方法
Excelで特定文字以前を削除するワークシート関数
Excelで特定文字以前を削除するワークシート関数一覧は以下の通りです。
一つのワークシート関数で用意されていませんのでそれぞれの関数を組み合わせて処理をしていきます。
関数名 | 機能 | 書式 |
---|---|---|
RIGHT | 文字列の末尾 (右端) から指定された文字数を返します。 | =RIGHT(文字列,文字数) |
LEN | 文字列に含まれる文字数を返します。 | =LEN(文字列) |
FIND | 指定された文字列を他の文字列の中で検索します。文字列が最初に現れる位置を左端から数え、その番号を返します。大文字と小文字は区別されます。 | =FIND(検索文字列, 対象, 開始位置) |
サンプルデータを用意する
サンプルデータを用意しましょう。
A列に抽出したい文字列、C列に特定文字より前抽出の結果、D列に特定文字以前を削除した結果を出力するように構成します。
A列に入っている値は半角スペース区切りで日にちと時刻が入っており、半角スペースを基準に文字列を分割していきます。
数式を実装する
数式を実装していきましょう。
C列の特定文字より前抽出の結果用の数式をC2セルへ入力します。
=LEFT(A2,FIND(" ",A2))
Excelで特定の文字以降を削除する方法!関数とVBAで複数一括処理も!
D列の特定文字より前抽出の結果用の数式をD2セルへ入力します。
=RIGHT(A2,LEN(A2)-FIND(" ",A2))
次にCD列に入力した数式を表の下部までドラッグします。
はい、特定文字以前を削除した結果が出力されていますね。
数式の説明
数式について説明をします。
LEN関数でA列の文字数をカウントし、FIND関数で左から数えた特定文字の位置の文字数をマイナスします。
LEN(A2)-FIND(" ",A2)
RIGHT関数で右端から何文字必要か、上記計算式の結果により指定していきます。
RIGHT(A2,LEN(A2)-FIND(" ",A2))
Excelで特定文字以前を削除するVBA
Excelで特定文字以前を削除するVBAについて説明をします。
サンプルデータはワークシート関数と同じものを使用します。
VBAコード
サンプルのVBAコードは以下の通りです。
Sub 特定の文字以前を削除する()
Dim arrTemp As Variant
Dim i As Integer
Dim rangeTemp
'抽出対象の列および出力対象の列を含む範囲を指定します。
Set rangeTemp = range("A2:D5")
'Rrangeオブジェクトの行数分処理を繰り返します。
For i = 1 To rangeTemp.Rows.Count
'特定文字を基準に分割をし、配列へ格納します。
arrTemp = Split(rangeTemp.Cells(i, 1).Value, " ")
'抽出結果を配列に代入します。
rangeTemp.Cells(i, 3).Value = arrTemp(0) '表の3列目に特定文字より前の抽出結果を出力します。
rangeTemp.Cells(i, 4).Value = arrTemp(1) '表の4列目に特定文字より後の抽出結果を出力します。
Next
End Sub
VBAの実装
VBAの実装方法については
VBAの実装手順
をご参照ください。
VBAを設定する
VBAを設定していきます。
抽出対象の列および出力対象の列を含む範囲を指定します。
サンプルの表は”A1:D5″を範囲としますが、データ部分の”A2:D5″に絞っています。
Set rangeTemp = range("A2:D5")
抽出結果のセル列の位置をしていします。サンプルでは表の3列目を特定文字より前の抽出結果を出力する項目、4列目を後の抽出結果を出力する項目としています。
rangeTemp.Cells(i, 3).Value = arrTemp(0)
rangeTemp.Cells(i, 4).Value = arrTemp(1)
VBAを実行する
VBAを実行してみましょう。
はい、複数データに対して、特手文字より前と後ろの抽出結果がすべて出力されましたね!
VBAの説明
VBAについて説明をします。
抽出対象の列および出力対象の列を含む範囲を指定します。
Set rangeTemp = range("A2:D5")
Rrangeオブジェクトの行数分処理を繰り返します。
For i = 1 To rangeTemp.Rows.Count
特定文字を基準に分割をし、配列へ格納します。
arrTemp = Split(rangeTemp.Cells(i, 1).Value, " ")
表の3列目に特定文字より前の抽出結果を出力します。
rangeTemp.Cells(i, 3).Value = arrTemp(0)
表の4列目に特定文字より後の抽出結果を出力します。
rangeTemp.Cells(i, 4).Value = arrTemp(1)
VBAの実装手順
実装手順は以下の通りです。
Excel側にVBAを実装していきます。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。
②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。
③右ペインのウインドウに上記のVBAを入力します。
こちらで完了です。
VBAを実行する
では早速VBAの実行をしてみましょう。
①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。
②処理がされたことが確認できれば完了です。
さいごに
いかがでしょうか。
今回は、
・Excel VBAで特定文字以前を削除する方法
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す