- ベストアンサー
特定の条件で抽出してランキングを求める方法
ある業界の製品ランキング100位までのリストがあり、製品名、売上高、会社名が載っています。このうち、ある会社Aの中での売上げランキングを求めるにはどのような関数を使えばよいのでしょうか? よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
Excelのはなしですよね? 関数でフィルタをかける方法はいろいろありますが、例えば、 Sheet1:元データ 1行:見出行 2~101行:データ A列:順位 B列:会社名 C列:製品名 D列:売上高 であり、 Sheet2:抽出先 1行:見出行 A列:順位 B列:製品名 C列:売上高 と表示するとします。 Sheet2!A列にあらかじめ1,2,3…と順位を振っておき、 Sheet2!B2:=OFFSET(Sheet1!C$1,SMALL(IF(Sheet1!$B$2:$B$101="A社",Sheet1!$A$2:$A$101),$A2),0) として配列数式として入力(Ctrl+Shift+Enter)し、 B列下方とC列にフィルすれば、ご要望のリストが表示されるはずです (EXCEL2003で動作確認) なお、例えば、A社の製品が4つしかランクインしていない場合、5位以降は#NUM!エラーが返ります。 気になるようでしたら、 条件付書式で、数式が:=ISERROR(A1)⇒フォント白 などとして処理してください。 関数を使う方法としては、他に、作業列を使ってOFFSET(MATCH)やINDEX(MATCH)で引く方法や 配列数式の代わりにSUMPRODUCTを使う方法などがあります。 なお、既にご承知かも知れませんが、こういった処理は通常は「オートフィルタ」という機能で行います。 表全体を選択して、データ>フィルタ>オートフィルタ とクリック。 会社名の見出しをクリックして、ドロップダウンリストから「A社」を選択すればご要望のリストが抽出されます。 また、オートフィルタで抽出するだけでなく会社ごとの順位が必要な場合には、 SUBTOTAL(3)関数を使ってフィルタ後の見た目でナンバリングすることもできます。 以上ご参考まで。