VBA(マクロ)を利用して英字だけを削除したい

VBA(マクロ)を利用して英字だけを削除したい

英字だけを削除したい

ご提供頂くデータの中に、データの取り込み過程の中で英語表記と日本語表記が混在してしまったケースがあります。この場合数字は残したまま半角英字のみを削除することで正規化することが可能な状況です。

品番 品名
00001 製品Product1
00002 試薬Reagent2
00003 ビーカーBeaker3

英字のみを削除する方法は特定の文字を別の文字に変えたいでご紹介した関数の置換でも可能ですが、非常に長い構文になるため、煩雑でメンテナンス性も悪いため、VBA(マクロ)の正規表現を使う方法をおすすめします。

正規表現とは特定の文字だけではなく文字種や文字列に対して検索や置換をするための表現方法です。 ExcelのVBAはこの正規表現に対応しているため、正規表現で英字を定義し、削除(置換)していくことが可能です。

VBAでの英字削除方法

VBAの編集方法やファイル内でのマクロ使用許可についてはこの記事内では割愛させていただきます。 以下は、文字列から英字を削除するサンプルのコードです。

対象文字列(引数1):sourceTxt 置換結果(引数2):resultTxt

Sub FindAlphabetRegExp(sourceTxt, resultTxt)
    Dim re As New RegExp
    re.Pattern = "[a-zA-Z]"
    re.Global = True
    resultTxt = re.Replace(sourceTxt, "")
End Sub

このサブルーチンを呼び出すことで、半角英字を置換できることができます。

Massteryで対応するとこうなる

Massteryでは、項目値から大文字と小文字の英字を削除する関数を用意しています。

Massteryで英字を削除する例

指定内容

変換対象カラム
Massteryはフォーマットの項目単位で変換を指定しますので、入力ファイルの項目(列の名称)を指定します。今回は項目の状態を調べて出力する項目を新たに設けて割り当てるようにします。
変換方法
変換対象カラムに値またはロジックを適用する「=」を指定します。
値または変換ロジック
trim_alphabet(“品名”) ※関数名は大文字/小文字どちらも指定可能です。

TRIM_ALPHABET関数式の解説

Massteryでの書式は以下になります。

TRIM_ALPHABET("参照先カラム名称")

引数は1つになります。

引数

TRIM_ALPHABET("品名")

英字を削除したい項目を指定します。カラム名称を指定する場合は、ダブルクォーテーションで囲います。

如何でしたでしょうか。 英字の削除以外にもMassteryでは商品データの整備に必要なオリジナルの関数を多数用意しております。 ご興味がございましたら、未公開の関数をご案内いたしますので、是非お問い合わせください。

関連記事

同じカテゴリの記事

お問い合わせ

Massteryのより詳しい情報、ご対面でのご案内をご希望の方は是非お問い合わせください。
下記のお問い合わせフォームよりお申し込み頂ければ担当の営業からご連絡いたします。

運営会社 フォルシア株式会社

Close Bitnami banner
Bitnami