Excel(エクセル)で範囲内に特定の文字列があれば抽出する方法をご紹介!

Excel(エクセル)で特定の範囲にある文字列を抽出する方法をご紹介 Excel(エクセル)

業務中に調べることの多い、Excel,Word,PowerPointなどのノウハウを発信していきます!

Biz Magic編集部をフォローする

Excel(エクセル)INDIRECT関数、MATCH関数

皆さんExcelのINDIRECT関数MATCH関数をご存じでしょうか?INDIRECT関数とは、指定したセルの値を返す関数です。例えば以下のように入力するとH1の値を返します。

=INDIRECT("H"&1)
=INDIRECT("H"&1)

つまりJ1「aaa」セルにも表示されます。

J1「aaa」セルにも表示され

次にMATCH関数です。MATCH関数は検索条件に一致するセルの位置を返す関数です。以下のように入力するとH1セルのある行数を返してくれます。

=MATCH(H1,H:H,0)
=MATCH(H1,H:H,0)

つまり、H1の1が返ってきます。

H1の1が返ってきます

この関数たちを使ってどのように特定範囲内の文字列を抽出するのか詳しい説明はこの後にしますが今回の記事では、この二つの関数を使用し特定の範囲内に入力された文字列を抽出する方法について紹介しているんだなと思っておいてください。

Excel(エクセル)範囲内の文字を抽出する方法

では、早速ですが範囲内の文字を抽出する方法についてご紹介します。今回はB列に何か入力されたらE列にその文字列を表示する方法をご紹介します。まず、E列に以下の式を入力してください。

=INDIRECT("B"&MATCH("*",B:B,0))
=INDIRECT("B"&MATCH("*",B:B,0))

次にB列に適当な文字を入力してください。

B列に適当な文字を入力

すると、入力した値がE列に反映されました。この数式ではB列を指定しているのでB列のどこに文字を入力してもE列に反映されます。

この数式ではB列を指定しているのでB列のどこに文字を入力してもE列に反映されます

上記の画像からもわかる通りB列の行数が少ない順に優先的に表示されます。では、使用した数式について説明していきます。

=INDIRECT("B"&MATCH("*",B:B,0))

ここで使用しているMATCH関数は検索条件に一致するセルの位置を数値で表します。記述方法は以下の通りです。

=MATCH(検査値,検査範囲,照合の型)

MATCH関数の第一引数は一致する文字列を入力しますが、今回はどのような文字を入力しても取れるように「*」を指定しています。
「*」はワイルドカードと呼ばれどの文字でも一致することを指します。

例えば「*ワイルドカード」だと「ワイルドカード」の前はどのような文字列があってもカウントします。「*」は文字列の前後につけることができつけた箇所はどのような文字列でも問題ありません。

ほかには「?」もワイルドカードの一種です。「?」の場合は一文字をさします。複数使用することもできます。例えば「ワイルドカー?」とすると検索値が「ワイルドカー」+一文字ですが「ワイルドカ??」とすると検索値が「ワイルドカ」+ニ文字です。 まとめると「*」は複数文字扱い、「?」は一文字扱いとなります。

つまりこの数式では「*」を指定しているのでB列に入力された何かを指しています。

=INDIRECT("B"&MATCH("*",B:B,0))

注意点はワイルドカードは文字列にしか使えないので0など数値のみのセルは見つけることができません。この数式では「=”B”&MATCH(“*”,B:B,0)」でB1という値が返って来ます。しかしこのB1というのはセル番号ではなく単なる文字列としてのB1です。

なのでINDIRECT関数を使用しB1をセル番号として認識させることでB列に入力された値を取得することが可能になるのです。この数式を組み合わせることで複数の値を取得することも可能ですが取得する行数文字列が多いほど数式が長くなってしまいます。

例えば、以下のように入力すると2つ目も取得することができます。

=INDIRECT("B"&MATCH("*",INDIRECT("B"&MATCH("*",B1:B13,0)+3):B13,0)+MATCH("*",B1:B13,0)+2)
=INDIRECT("B"&MATCH("*",INDIRECT("B"&MATCH("*",B1:B13,0)+3):B13,0)+MATCH("*",B1:B13,0)+2)

これで「aaa」という文字列も取得することができました。

「aaa」という文字列も取得することができました

このように関数を組み合わせ数式を作ることで複雑な処理も素早く行えるようになります。

どうでしょうか?少し難しかったかもしれませんが今回はINDIRECT関数とMATCH関数を使用し範囲内に文字列があれば抽出するという作業を行いました。今回の方法で指定範囲内にある値を複数個取得するとなるとどんどん数式が長くなってしまいますので、IF文で取得するのも1つの方法ではないかと思います。

Excelの操作方法は実際に手を動かし、身につけていきましょう

今の時代、様々な仕事でExcelを使用することがあるでしょう。今回はExcelで範囲内にある文字列を取得する方法についてご紹介しました。このような機能を使いこなすことができれば仕事にも役に立つので、実際に手を動かし、覚えていきましょう。

WordやExcelなどのOfficeツールでは便利なショートカットキーなどがたくさんあるのでよく使う作業に関してはショートカットキーを調べてみるのも効率よく仕事を進める上で大切なことなのでこれから実践してみましょう。

コメント

タイトルとURLをコピーしました