抽出したいものが数値で合計を出したい場合はSUMIFS関数を使えば簡単にできますが、抽出したい値が文字列だった場合はどうしたら良いか?
VLOOKUPをそのまま使うと検索値はひとつだけしか指定できません。
これを応用して、複数列の中から検索値に合致する値の文字列を抽出する方法です。
例えば下図のような表があります。
左端には必ず番号を振っておくのがポイントです。
ここから下図のようなデータに一致するE列の値を抽出してみます。
抽出したいものが数値で合計を出したい場合はSUMIFS関数を使えば簡単にできますが、抽出したい値が文字列だった場合はどうしたら良いか?
VLOOKUPをそのまま使うと検索値はひとつだけしか指定できません。
これを応用して、複数列の中から検索値に合致する値の文字列を抽出する方法です。
例えば下図のような表があります。
左端には必ず番号を振っておくのがポイントです。
ここから下図のようなデータに一致するE列の値を抽出してみます。
文字列の中間に数字がある時に取り出す方法は「文字列の中から数字を取り出す(数字が中間にある時)」で記載しましたが、こちらは数字の前後にカッコ「」など検索しやすい記号がある場合に使うと、式が多少短くなるのと配列ではなくなるので使いやすいと思います。
数字の前後にカッコ「」がついてる例だと以下のようになります。
"あいうえおかきくけこ「123」"
英字(アルファベット)と日本語を分ける場合は「英字(数字)と日本語を分ける」で記載しましたが、では英字から数字を取り出す場合にはどうしたらよいか。
下図のような表がある時に、別のセルに数字だけを取り出すことができます。
通常FIND関数だと1件しか検索できません。
=FIND("りんご",A1)
といったように使い、「りんご」という文字が検索セルの中の何文字目にあるかを返します。
検索するものが「りんご、みかん、ばなな・・・」といった具合に複数ある場合はどうしたらよいか?
下図のように検索する文字が複数ある場合の計算をしてみます。
検索値に紐づいた値を抽出するのにVLOOKUP関数が便利です。
しかし検索値は1列しか指定できません。
隣のセルどおしをそのまま使って良いならばセルを繋げるだけなので簡単ですが、セルがバラバラで抽出したいものがどこにあるかわからない、さらに重複もある場合は困難です。
そういった場合の指定方法はVLOOKUPを使わずに以下のような式で対応すると良いです。
例えば下図があります。
この中から「担当者が山田」「評価がA」のものを抽出したいとき、単純にA列とB列を繋げただけでは対応できません。
重複するものが出てきてしまいます。
ではどうしたらよいか。
以下のように配列を使っていきます。
VLOOKUP関数で文字列のあいまい検索をさせたい場合にワイルドカードを使いますね。
「*」アスタリスクは、文字数を決めないで検索可能
例:「アップル*」と指定すると「アップルジュース」も「アップルパイ」も検索できます。
「?」クエスチョンマークは、1文字を検索
例:「アップル?」と指定すると「アップルA」「アップルB」と検索できますが「アップルCC」は検索できません。
上記の例は検索する単語が決まっている場合です。
では検索する単語が都度変化する場合、セルを指定することが良くあります。
A1に文字入力して、そこを検索値とするケースです。
この場合よくやりがちなのが「*A1*」や「"*"A1"*"」と指定してしまいます。
しかしこれでは検索できません。
正しくは「"*"&A1&"*"」と「&」の記号で繋げるようにします。
例を見てみましょう。
セル内に同じ記号があった場合、最後に来る記号は文字列の何個目になるのか数えます。
右から検索する、といったイメージです。
セル内の文字位置は違えど表示される記号は必ず3つなどと個数が決まっている場合はこちらで対応できます。
【セル内に同じ記号が複数ある中でn個目の記号が文字列の何番目にあるか数える】
今回は、表示される記号の個数がバラバラで決まってない場合に使えます。
例えば、”セルが結合されてないシート”があり、ここにデータが入っているとします。
このデータを、”セルが結合されているシート”の方へコピペしようと思っても、エラーで「結合されたセルの一部を変更することはできません。」と出てしまったり、セルの数が合っていて貼り付けできたとしても結合が解除されてしまったり、とコピペすることができません。
では「=」イコールを使ってセルを参照しようと思っても、参照するセルが飛び飛びになってしまい、これも上手くいきません。
そこで以下のような式を使ってセルをコピーしてみたいと思います。
例えばセル内にハイフンが複数個あるとします。
n個目に出てきたハイフンが、文字列の先頭から数えて何番目に出現しているかを数えたい、という時に使える式です。
下図のA1のようなデータがあったときに、4個目のハイフンは文字列何番目にあるか数えます。
表形式になっているデータを1列に取り出したいとき、1行ずつコピペすればできますが、データが多くあるときは効率が悪いです。
以下の関数を入れてオートフィルコピーで下方へドラッグすれば楽にできます。