Excelで特定の文字以前を削除する方法!関数他VBAで一括処理も!

Excelで特定文字以前を削除したいときはないでしょうか。

けど、そんな中で悩むことは、

・Excelで特定文字以前を削除したいが方法がよくわからない
・Excel VBAで特定文字以前を削除したいが方法がよくわからない

ですよね。

今回はそんなお悩みを解決する

・Excelのワークシート関数で特定文字以前を削除する方法
・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のワークシート関数で特定文字以前を削除する方法
・Excel VBAで特定文字以前を削除する方法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です