Excelの生データを入手すると、テキスト、数字、英数字以外の文字が混在していることがあり、データを扱う前に英数字以外の文字を削除する必要があります。
英数字以外の文字を削除する1つの方法として、データセットのセルからセルごとに英数字以外の文字を削除する方法がありますが、特に大きなデータセットを扱う場合、この方法は現実的ではありません。
このチュートリアルでは、データセットから不要な非英数字を簡単に削除するためのいくつかの方法を紹介します。
Excelで英数字以外の文字を削除する2つの方法
以下の2つの方法は、Excelで英数字以外の文字を削除するために使用できるアプローチの一部です:
方法1 – ExcelのSUBSTITUTE関数を使用する。
データセットに英数字以外の文字が1種類しか含まれていない場合、SUBSTITUTE関数を使用してそれらの文字を空文字列に置き換えることができます。
ここでは、英数字以外の文字がアスタリスク(*)1種類しかないデータセットの例を示します:
SUBSTITUTE関数を使用して、アスタリスク(*)を空の文字列に置き換えます:
ステップ1- セルB2に数式=SUBSTITUTE(A2, ” * “,” “) を入力する:
ステップ2– Enterを押す:
ステップ3– セルB2の フィル・ハンドルを使って数式を下にドラッグし、データセットの残りの空セルにコピーする:
アスタリスク(*)はすべて空文字列に置き換えられた。
入れ子のSUBSTITUTE関数
SUBSTITUTE関数は、一度に複数の英数字以外の文字を置換することはできません。
データセットに少なくとも2種類の英数字以外の文字が含まれている場合は、少なくとも2つの入れ子SUBSTITUTE関数を使用して、それらの文字を削除することができます。
例えば、2種類の非英数字を削除したい場合は2つの入れ子SUBSTITUTE関数を使用し、3種類を削除したい場合は3つの入れ子SUBSTITUTE 関数を使用します。
以下のデータセットには、アスタリスク(*)とポンド記号(#)の2種類の非英数字文字が含まれています:
以下のステップでは、2つの入れ子SUBSTITUTE 関数を使用して英数字以外の文字を削除します:
ステップ1– セルB2に数式=SUBSTITUTE(SUBSTITUTE(A2, ” * “,” “), ” # “,” “)を入力する:
ステップ2– Enterキーを押し、塗りつぶしハンドルを下にドラッグして、空のセルを数式で塗りつぶす:
英数字以外の文字が空の文字列に置き換えられた。
削除したい英数字以外の文字の数に応じて、SUBSTITUTE関数をどんどん数式に追加していくことができます。しかし、SUBSTITUTE関数を追加すればするほど、数式は重くなります。
英数字以外の文字を一度に削除するより実用的な方法は、ユーザー定義関数を使うことです。
参照: Excel VLOOKUPを使って複数の値を縦に返す
方法2 – ユーザー定義関数を使う
データセットから英数字以外の文字をすべて削除するには、以下の手順でExcel VBAマクロを作成する必要があります:
ステップ1-[開発]タブで、[Visual Basic]コマンドをクリックするか、Alt+F8キーを押します:
Visual Basic Editor (VBE)ウィンドウが表示されます。
ステップ2– 新しいモジュールを作成するために、Insert>>Moduleをクリックします:
新しいモジュールが作成されます:
ステップ 3– 新しいモジュールで、以下のコードを入力し、 保存ボタンをクリックします :
Function RemoveNonAlphaN(str As String) As String Dim ch, bytes() As Byte: bytes = str For Each ch in bytes If Chr(ch) Like "[A-Z.a-z 0-9] " _ Then RemoveNonAlphaN = RemoveNonAlphaN & Chr(ch) Next ch End Function
ステップ4–Microsoft Excelの表示ボタンをクリックするか、キーボード・ショートカットAlt + F11 を押して、現在のワークシートに戻る。例として使っているデータセットのセルB2に、数式=RemoveNonAlphaN(A2)を入力する:
ステップ5-入力し、フィル・ハンドルを使って下にドラッグする:
英数字以外の文字がすべて削除されます。
結論
このチュートリアルでは、データセットから英数字以外の文字を削除する2つの方法を紹介しました。お好きな方をお使いください。