Calcの関数

偶然某所に居合わせた顔見知りでLibreofficeを
自宅で使っている学校の先生に聞かれました。

生徒に順位をつけるときにRAND関数を使うと
同点の子が2人いた場合それ以降の順位が
一つ飛んでしまうけど飛ばないようにするには
どぉしたらよいのだろう?

つまり100点が1人95点が2人90点が一人の場合

100点 1位
95点 2位
90点 4位

ではなく順位を飛ばさずに4位を3位と表示したいのですね。

拙生はアプリに関する質問に対しては極力避けることに
しています。
多分ハードやOS自体については若干知識は持ちあわせている
(と自身では思っている)のですが、アプリに関しては
それほど詳しいわけではなく、またWindowsユーザーでは
一般的なアプリであっても全く使ったことのないものも多々あり
お教えするほどの知識はないからです。

またこの手の質問に上手く対応できた場合、次々に質問
されることになり兼ねないのでボロが出ないよう避けている
というのが本当のところです。(笑

ただLibreofficeのCalcの話ならちょっとは分かることと、
めったにお会いしない方なので、次の質問はないだろうと
お答えすることにしました。

例えばA1〜A4に点数があり、B1〜B4に順位を表示する場合
B1を選択して =RANK(A1,$A$1:$A$4) とすればA1の点数が
A1〜A4にある点数のうちの何位かがB1に表示されます。
後はB1をコピーしてB2〜B4へペーストすると、各点の順位が
表示されますが、前述の通り2位が2人だと3位がなくて次は
4位になってしまいます。

飛ばさないためには拙生ならCOUNTIF関数とSUMPRODUCT関数の
合わせ技で行きます。
まずはB1に =COUNTIF($A$1:A1,A1) を入れてB2〜B3にも
コピーしておきます。
これにより同じ点数があると2つ目は2、3つめは3のように表示します。

100点 1
95点 1
90点 1
95点 2

こんな感じ。。。

更にC1を選択して
=SUMPRODUCT(($B$1:$B$5=1)*($A$1:$A$5>A1))+1
としC2〜C4にコピーすると順位は飛ばずに表示されます。

100点 1位
95点 2位
90点 3位

あれ?Excelと一緒だ。
やってみたのだけれどその時は出来なかったんで聞いた
んだよねぇ。。。やっぱできるんだ。。。とのことでした。^^;;

Libreofficeの表計算であるCalcの関数はほぼExcelと
一緒であります。
使い方も大きな違いはなくウィザードがちょっと違うくらい。
ウィザードはほとんど使わず生書きする拙生にはまったく
同じと言っても良いくらいです。
Excelで使っていた関数なら違和感なく使えるはずですが
出来なかったのはきっとその時にナニかを間違えて
いたのでしょうね。
関数ビギナーの方ではなかったので説明自体はあっけなく
終わったのでヨシとします。

ところが案の定次の質問が来ました。^^;;
10段階評価でデーターを抽出するには?という質問でしたが、
IF関数では出来ないので条件を書き出してLOOKUP関数で
抽出したらよいとヒントを出したところで時間切れとなりました。
別れ際に連絡先を聞かれ数時間後に出来た!というご連絡を
いただきました。
う〜ん、これもたしかExcelと一緒だと思うのですが。。。
ま、いいか。w

HOME

おすすめ