下図の左側にあるデータの中で、最低点が70より小さいデータのみを抽出したい場合。
1回で抽出できなくても良いならば、例えば空いている列に70より小さい場合は[1]とフラグを立てるようにIF関数を入力し、オートフィルタで[1]の行を抽出、それをコピーして別シートにでも貼り付ければ出来上がります。
ただ毎回データが変わるとなると、この手間を繰り返さないといけないので面倒です。
データが変わっても常に抽出できるようにしておきたい場合は以下の関数で出来ます。
下図の左側にあるデータの中で、最低点が70より小さいデータのみを抽出したい場合。
1回で抽出できなくても良いならば、例えば空いている列に70より小さい場合は[1]とフラグを立てるようにIF関数を入力し、オートフィルタで[1]の行を抽出、それをコピーして別シートにでも貼り付ければ出来上がります。
ただ毎回データが変わるとなると、この手間を繰り返さないといけないので面倒です。
データが変わっても常に抽出できるようにしておきたい場合は以下の関数で出来ます。
英字(アルファベット)と日本語を分ける場合は「英字(数字)と日本語を分ける」で記載しましたが、では英字から数字を取り出す場合にはどうしたらよいか。
下図のような表がある時に、別のセルに数字だけを取り出すことができます。
通常FIND関数だと1件しか検索できません。
=FIND("りんご",A1)
といったように使い、「りんご」という文字が検索セルの中の何文字目にあるかを返します。
検索するものが「りんご、みかん、ばなな・・・」といった具合に複数ある場合はどうしたらよいか?
下図のように検索する文字が複数ある場合の計算をしてみます。
検索値に紐づいた値を抽出するのにVLOOKUP関数が便利です。
しかし検索値は1列しか指定できません。
隣のセルどおしをそのまま使って良いならばセルを繋げるだけなので簡単ですが、セルがバラバラで抽出したいものがどこにあるかわからない、さらに重複もある場合は困難です。
そういった場合の指定方法はVLOOKUPを使わずに以下のような式で対応すると良いです。
例えば下図があります。
この中から「担当者が山田」「評価がA」のものを抽出したいとき、単純にA列とB列を繋げただけでは対応できません。
重複するものが出てきてしまいます。
ではどうしたらよいか。
以下のように配列を使っていきます。
同列に日付のデータがあるときに、日は異なるが同月だったら何件あるか数えたい、といった場合。
COUNTIFSがよく使われますが、文字列だった場合は検索文字を1回指定すれば良いので楽ですが、日時の場合は「○日以上○日以下」と2回指定する必要があり面倒です。
これを簡単にまとめて計算する方法を試してみましょう。
VLOOKUP関数で文字列のあいまい検索をさせたい場合にワイルドカードを使いますね。
「*」アスタリスクは、文字数を決めないで検索可能
例:「アップル*」と指定すると「アップルジュース」も「アップルパイ」も検索できます。
「?」クエスチョンマークは、1文字を検索
例:「アップル?」と指定すると「アップルA」「アップルB」と検索できますが「アップルCC」は検索できません。
上記の例は検索する単語が決まっている場合です。
では検索する単語が都度変化する場合、セルを指定することが良くあります。
A1に文字入力して、そこを検索値とするケースです。
この場合よくやりがちなのが「*A1*」や「"*"A1"*"」と指定してしまいます。
しかしこれでは検索できません。
正しくは「"*"&A1&"*"」と「&」の記号で繋げるようにします。
例を見てみましょう。
データの件数を数えるならば通常はCOUNT、COUNTA、COUNTIF・・・などがあります。
しかし重複データを1件として数えたい場合には、これらの式だけでは対応できません。
下図のように重複したデータがあります。
個数を数えるだけなら13件ですが、重複は1件として数えると5件となります。
セル内に同じ記号があった場合、最後に来る記号は文字列の何個目になるのか数えます。
右から検索する、といったイメージです。
セル内の文字位置は違えど表示される記号は必ず3つなどと個数が決まっている場合はこちらで対応できます。
【セル内に同じ記号が複数ある中でn個目の記号が文字列の何番目にあるか数える】
今回は、表示される記号の個数がバラバラで決まってない場合に使えます。
近似値を抽出する場合には、指定数の範囲内で抽出することが多いと思います。
この場合の式もページ下部に記載しましたが、今回は指定数を超えない場合と超える場合を両方含んだものを複数件抽出してみます。
例えば「1000」の近似値を4件抽出してみます。
下図のように数値が並んでいます。
(「1000」の近似値をわかりやすく色付けしてます)
各行でそれぞれの点数を計算し最後にまとめて合計する、といった方法ならばIF関数だけでできます。
これを各行での計算を使わずに、合計だけを一発で求める方法です。
下図のような表があった時に、○は5点、△は3点、×は0点、として合計を出します。