rank関数とifの併用の勉強
要件
- 適当にカテゴライズした動物の時速のランキングを作りたい
- 途中でカテゴリごとに平均を出したいが、平均欄は無視する
- 10位までをだしたい
サンプル
カテゴリ | 動物 | 速さ(km/h) | 順位 |
---|---|---|---|
1 | 亀 | 0.1 | |
うさぎ | 40 | 6 | |
ぞう | 40 | 6 | |
猫 | 20 | 10 | |
平均 | 25.025 | ||
2 | ライオン | 74 | 1 |
しまうま | 65 | 5 | |
猿 | 22 | 9 | |
平均 | 53.66666667 | ||
3 | ダチョウ | 70 | 3 |
グレイハウンド | 72 | 2 | |
カンガルー | 70 | 3 | |
ぶた | 40 | 6 | |
ハリネズミ | 1 | ||
平均 | 50.6 |
使う関数
- RANK関数
- データ範囲内で比較したときの順位
=RANK(対象のセル, 範囲, 降順(0)または昇順(1))
- IF関数
- IFERROR関数
- エラー出たら代わりに
IFERROR(出す値, エラー時の値)
記法解説
- spreadsheetでは、
{}
で囲うと、複数の対象範囲をまとめて扱える
実際の関数例
=IF( // 条件 IFERROR( RANK( // 対象のセル B1, // 範囲(カテゴリごとの平均を取り除くため、複数の範囲を指定している) { $B$1:$B$4; $B$6:$B$8; $B$10:$B$14 } ), // 平均値のセルはエラー出るのでfalseの判定になるように11を入れる 11 ) <= 10, // trueだった場合 RANK( B1, { $B$1:$B$4; $B$6:$B$8; $B$10:$B$14 } ), // falseだった場合 "" )
生
=IF(iferror(RANK(B1,{$B$1:$B$4;$B$6:$B$8;$B$10:$B$14}), 11)<=10,RANK(B1,{$B$1:$B$4;$B$6:$B$8;$B$10:$B$14}),"")