Excelで文字列の途中、一部を抜き出す方法/Mid関数の使い方、Find関数との組み合わせ方

coots IT

Excelには文字列の左から文字を抜き出すleft関数、右から文字を抜き出すright関数がありますが、「真ん中を抜き出したい」という場合もあります。そんな時にはmid関数の出番です。
Left関数でも似たようなことをやっているので、よかったら併せてどうぞ。

Advertisements

成果物

midad3
「A」と「B」の間の文字列だけを抽出する場合、=Mid(検索対象セル,Find(“A”,検索対象セル)+1,Find(“B”,検索対象セル) – Find(“A”,検索対象セル) -1)で可能です。
以下、なぜそうなるかという説明です。

Mid関数の使い方

文字列の途中から抽出
Mid(対象,開始位置、抜き出す文字数)
mid1
A列から天気だけを抜き出してみたいと思います。
midad1
=Mid(A1,6,2)
(A1の6文字目から数えて2文字を抽出)
と入力します。
midad2
天気を抽出することができましたが、「雨」に空白が入っています。

特定文字の次から抜き出す文字数を数えたい

midfind1
①空白文字「 」の位置をまず取得し、②midの開始位置に空白文字の位置+1を指定することで、特定の文字から右の文字を抜き出すことができます。
midfind2
特定の文字を探す場合、Find関数を使用します。対象のセルと検索する文字列を指定することで、文字列の位置を返す関数です。
検索文字列が左から何文字目にあるか調べる
Find(“検索文字列”,対象)
midfind3
今回で言えば検索文字列は「 」となります。なお、半角スペースと全角スペースは別文字として扱われるので、抽出対象に半角/全角入り乱れてる場合は半角全角を統一します。
midfind4
検索対象はA1セルです。
=Find(“ ”,A1)と入力し、Enterを押します。
midfind5
下までオートフィルを伸ばすと、それぞれ空白の位置を取得していることがわかります。
midfind6
関数は普通の数字と同じように他の関数に組み込むことができます。今作ったFind関数を、=以外選択してコピーし、
midfind7
Mid関数の「開始位置」に埋め込みます。
midfind8
この状態だと空白の位置を開始位置としてしまうので、
midfind9
Find関数に1を足す=開始位置をひとつ右にずらします。
=Mid(A1,Find(“ ”,A1)+1,2)という式になります。
midfind10
これで「空白より右の文字列を指定文字数抽出する」式の完成です。

特定文字と特定文字の間の文字だけを抜き出したい

midfind11
上のやりかたですと、A2が雨/となります。
midfind12
「 」と「/」の間の文字だけを抜き出すために、まずは「/」の位置をFind関数で求めてみます。
midfind13
「/」の位置から、さらにFind関数を使って求めた「 」の位置を引き算してみると、抜き出したい文字数に1を足した数値になっていることがわかります。
midfind14
これを-1し、=Find(“/”,A1) – Find(“ ”,A1) -1という式を作ります。これで「 」のひとつ右から抜き出したい文字数が求められます。
midfind15
=以外をコピって、
midfind16
Mid関数の「文字数」に貼り付けます。
式としては=Mid(A1,Find(“ ”,A1)+1,Find(“/”,A1) – Find(“ ”,A1) -1)となります。
midad3
完成するとこうなります。
midad4
ゴチャゴチャし過ぎ、という向きであれば、作業列を残したまま使用しても動作上問題ないです。
やりたいことから方法を探すエクセルExcel操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。

コメント