Excel

【Excel】エクセルで文字列の数字のみを削除・文字だけを消す方法【セル内で文字と数値が混ざっている】

当サイトでは記事内に広告を含みます

この記事では「エクセルでセル内文字と数値が混在している文字列の数字のみを削除する、文字だけを削除する方法」について解説します。

それではサンプルを用いて詳細をみていきましょう

 

エクセルで文字列数字だけを削除する方法【セル内で文字と数値が混ざっている】

下図のサンプルではB列に文字と数字が混ざって入力されています。

 

B列のデータから数字だけを削除し、数字以外の文字だけにしてみましょう。

 

B2セルのデータから数字を削除してD2セルに表示させます。数字だけを削除して、他の文字列だけを残すにはいくつかの関数の組み合わせで数式を作っています。

 

=TEXTJOIN(“”,TRUE,IF(ISERR(MID(B2,ROW(INDIRECT(“1:”&LEN(B2))),1)+0),MID(B2,ROW(INDIRECT(“1:”&LEN(B2))),1),””))

 

 

Ctrl + Shift + Enterキーを同時に押して結果を見てみましょう。

 

 

D2セルには数字が削除され、あいうえおの文字だけが表示されましたね。ではD2セルの数式をD3D7セルにコピーしましょう。

 

 

D2D7セルは数字が削除され文字だけの表示になりましたね。

 

 

ではD2セルに入れた数式について解説します。

 

=TEXTJOIN(“”,TRUE,IF(ISERR(MID(B2,ROW(INDIRECT(“1:”&LEN(B2))),1)+0),MID(B2,ROW(INDIRECT(“1:”&LEN(B2))),1),””))

 

MID(B2,ROW(INDIRECT(“1:”&LEN(B2))),1)
MID関数でB2セルの指定された位置から始まる文字列を取得します。
ROW(INDIRECT(“1:”&LEN(B2))) 1からの文字列の長さ(LEN(B2))までの数字を生成します。
ISERR (…)
数字でない場合、TRUEを返します。
IF (ISERR (…), MID(B2,ROW(INDIRECT(“1:”&LEN(B2))),1),””)
各文字が数字でない場合は保持、それ以外は空白文字列を返します。
TEXTJOIN(“”,TRUE,…)
各文字を空白なしで結合します。

 

ここで使っている関数について解説します。

 

TEXTJOIN(区切り文字, TRUE or FALSE, テキスト1, [テキスト2])
区切り文字:テキスト間に挿入される文字列(例では、””で空白)
TRUEの場合は空白セルを無視
テキスト1, [テキスト2], … テキストを結合
MID(文字列, 開始位置, 文字数)
指定した位置から文字数を返す
ROW(参照)
参照の行番号を返す
INDIRECT(参照文字列, 参照形式)
テキスト文字列をセルの参照文字列を返す
LEN(文字列)
テキスト文字列の文字数を返す
IF(, 真の場合の値, [偽の場合の値])
ISERR(テストの対象)
#N/Aエラー以外の時だけTRUEを返す

 

関数の組み合わせで複雑な数式になっていますが、分解すると理解がしやすいですね。

 

エクセルで文字列文字だけを削除する方法【セル内で文字と数値が混ざっている】

次も先ほどと同じサンプルを使い、文字だけを削除し、文字以外の数字だけにしてみましょう。

 

B2セルのデータから数字を削除してD2セルに表示させます。先ほどと同じようにいくつかの関数を組み合わせて数式を作ります。

 

=TEXTJOIN(““,TRUE,IFERROR(MID(B2,ROW(INDIRECT(“1:100″)),1)+0,””))

 

 

Ctrl + Shift + Enterキーを同時に押して結果を見てみましょう。

 

 

D2セルには文字が削除され、”2023”の数字だけが表示されましたね。ではD2セルの数式をD3D7セルにコピーしましょう。

 

 

D2D7セルは文字が削除され数字だけの表示になりましたね。

 

ではD2セルに入れた数式について解説します。

 

=TEXTJOIN(““,TRUE,IFERROR(MID(B2,ROW(INDIRECT(“1:100″)),1)+0,””))

 

MID(B2,ROW(INDIRECT(“1:100”)),1)
B2セルの文字を取得し、MID関数で指定された位置から始まる文字列を取得します。
ROW(INDIRECT(“1:100″)),1)+0,””))1から100までの数字を生成します。
MID(…)+0,””)
各文字を数値に変換します。もし文字が数字でない場合は、数値に変換できないためにエラーが発生します。
IFERROR(MID(…)+0,””)
エラーが発生した場合(文字が数字でない場合)、空白文字を返します。エラーが発生しない場合はそのまま数値が保持されます。
TEXTJOIN(“”, TRUE, …)
TEXTJOIN関数を使用して、各文字を空白なしで結合します。TRUEは空白セルを無視するオプションになります。

 

この数式では、セルB2に含まれる文字列から数字以外の文字を削除し、残って数字だけを結合していきます。この例では、100文字までの処理になっています数字の数によって“100”を変更して下さい。

 

IFERROR以外の関数は数字削除で説明していますのでそちらをご参照下さい。IFERROR関数について追加で解説します。

 

 

IFERROR(, エラーの場合の値)
「値」がエラー値であれば「エラーの場合の値」を返し、それ以外であれば「値」をそのまま返します。

 

関数の組み合わせで複雑な数式になっていますが、分解すると理解がしやすいですね。

 

まとめ エクセルでセル内の文字列の文字だけを消す方法【セル内で文字と数値が混ざっている】

この記事ではエクセルで文字列の数字のみを削除する方法、文字のみを削除する方法を解説しました。

 

それぞれの方法を理解し、業務に役立てていきましょう。