この記事では「エクセルにてアルファベットのみ抽出・削除する方法」について、解説していきます。
日本語は「ひらがな、カタカナ、漢字、アラビア数字、アルファベット」といった種類の異なる文字が飛び交う、世界でも稀な言語です。
そのため特定の文字種(アルファベットなど)のみを取り出すあるいは削除したいといった場面もあるはずです。
今回は、具体的に「アルファベット」を処理する方法について解説します。
・アルファベットだけ抽出
・アルファベットだけ削除
それでは、各場面において順番に説明していきます。
エクセルにてアルファベットだけ抽出する方法
エクセルにてアルファベットのみを抽出させるには、関数よりもVBAを使った方が効率的です。
事前準備としてVBA側の参照の追加を行います。
Ctrl+F11を押してVisual Basic Editorを開き、続いてメニューより「ツール」→「参照設定」を選択します。
「参照設定」ダイアログで「参照可能なライブラリ ファイル」より「Microsoft VBScript Regular Expressions 5.5」にチェックを入れます。
OKボタンを押して、Visual Basic Editor画面に戻り、ツリーの最上位である「VBAProject(Book.xlsm)」を右クリックし、「挿入」→「標準モジュール」を選択します。
表示されたエディタで
「Dim reg As New …」
と入力し、Ctrl+スペースキーを押します。
入力候補として「RegExp」が存在していれば、上記の参照設定が正しく機能しています。
ここまでできたら、コードを作成します。
エディタ内に次のように入力します。
Sub Work()
Dim reg As New RegExp 'オブジェクトのインスタンス
Dim matches As MatchCollection
Dim match As match
Dim Output As String 'ここに結果を格納する
reg.Pattern = "[A-Za-z]" 'アルファベット(大文字と小文字)
reg.Global = True 'Falseの場合は先頭の1文字しか抽出されない
Set matches = reg.Execute(Range("A2").Value)
For Each match In matches
Output = Output + match.Value '1文字ずつ出力されるのでそれらを連結
Next
Range("B2") = Output '出力用セルに書き込む
Range("B1") = "(" + Range("A1") + ")"
End Sub
なお、「‘…」はコメントで処理実行時にはないものとみなされます。覚書として記載するものなので、必要に応じて活用しましょう。
ここまでできたらシートをアクティブにし、サンプルデータを作成します。
下記例のようなアルファベットとそれ以外が混ざった文字列を用意してみましょう。
リボンの「表示」→「マクロ」→「マクロの表示」とクリックします。
「マクロ名」一覧に実行可能なマクロ名が表示されます。
今回は「Work」が表示されているはずなので、それを選択します。
「実行」ボタンを押すと、アルファベットのみが書き出されます。
実際はすべての入力値に処理を適用したいといったことも少なくありません。そこで、次のようにコードを変更します。
'アルファベットのみを抽出
Sub Work()
Dim reg As New RegExp 'オブジェクトのインスタンス
Dim matches As MatchCollection
Dim match As match
Dim Output As String 'ここに結果を格納する
Dim i As Integer: i = 0
reg.Pattern = "[A-Za-z]" 'アルファベット(大文字と小文字)
reg.Global = True 'Falseの場合は先頭の1文字しか抽出されない
For i = 0 To 4 '処理を要する行数-1を指定
Set matches = reg.Execute(Range("A2").Offset(i, 0).Value)
For Each match In matches
Output = Output + match.Value '1文字ずつ出力されるのでそれらを連結
Next
Range("B2").Offset(i, 0) = Output '出力用セルに書き込む
Output = ""
Next
End Sub
実行するとすべての行に対し、処理が実行されます。
エクセルにてアルファベットだけ削除する方法
削除については、「抽出」で作成したマクロ「Work」を次のように変更します。
'アルファベットのみを抽出
Sub Work()
Dim reg As New RegExp 'オブジェクトのインスタンス
Dim matches As MatchCollection
Dim match As match
Dim Output As String 'ここに結果を格納する
Dim i As Integer: i = 0
reg.Pattern = "[^A-Za-z]" 'アルファベット(大文字と小文字)
reg.Global = True 'Falseの場合は先頭の1文字しか抽出されない
For i = 0 To 4 '処理を要する行数-1を指定
Set matches = reg.Execute(Range("A2").Offset(i, 0).Value)
For Each match In matches
Output = Output + match.Value '1文字ずつ出力されるのでそれらを連結
Next
Range("B2").Offset(i, 0) = Output '出力用セルに書き込む
Output = ""
Next
End Sub
実行すると、アルファベットが削除された文字列が出力されます。
まとめ エクセルにてアルファベットのみ抽出・削除する方法
この記事では「エクセルにてアルファベットのみ抽出・削除する方法」について解説しました。
複雑で規模の大きな作業を手で行えば、ヒューマンエラーを招き、またそのためだけに作業者を要してしまうデメリットがあります。
エクセルにはそのような定型作業を自動化できる仕組みがあるので、積極的に活用したいところです。