プロが教えるわが家の防犯対策術!

Googleスプレッドシート(以下、SS)についての質問です。

SSで数行ごとにRANKする方法
SSで数行ごとに順位をつける方法が分かりません。

例えば、A列に1000行、乱数の数字が並んでいるとします。
これをB列に10行ごと区切って1~10までRANK関数で順位付けする、といったことを行いたいです。

B1=RANK(A1,$A$1:$A$10,0)とすれば、B10まではコピーすればいいのですが、範囲を$A$1から$A$10に固定してしまっているため、それ以上はコピーではできません。

関数で実現するにはどのようにすればいいのでしょうか?

またSSなので、Arrayformula関数を使用できたらと思いますが、rank関数と同時にできないため、rank関数の代わりになるものもお教えいただきたいです。

よろしくお願いいたします。

質問者からの補足コメント

  • どう思う?

    Arrayformula関数はシートのメンテナンスをする際に使いたいので、下方にフィルコピーは現状案としてはなしでお願いいたします。

      補足日時:2022/08/17 14:53

A 回答 (2件)

No1です。



>メンテナンスをする際に使いたいので、
メンテのためだけに負荷のかかる計算をするのもどうかと思いますけれど・・・

No1にも書きましたが、スプレッドシートは存じませんので知りませんけれど、エクセルであればフィルハンドルをダブルクリックすることで、自動で左側の最終行までフィルコピーができます。
同様の機能は無いのでしょうか?

どうしても配列数式にしたければ、同じ要領で行えばよいのではないでしょうか?
スプレッドシートの機能は知りませんけれど、エクセルの場合で、スピル機能があるバージョンであれば、配列数式に変えれば自動でスピルします。
    • good
    • 0

こんにちは



スプレッドシートはほとんど存じませんけれど・・

A1:A10、A11:A20、・・・と10行単位で区切って、それぞれの範囲でランク付けをしたいという意味ですよね?

であるなら、ご提示の式中の
>$A$1:$A$10
の部分を、10行単位で変わる様な式にしておけば良いのではないでしょうか?

スプレッドシートでもOFFSET関数が使える様ですので、B1セルに
=RANK(A1,Offset($A$1,int((row()-1)/10)*10,0,10),0)
として、下方にフィルコピーではいかがでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!