私は、AS/400 で動作する古いプログラムを翻訳する必要があります。このプログラムは、ランダムに学生を選んで自分の街で働いていました。機能する限り、どのプログラムでも使用できます。簡単かつ迅速にするために、私はExcelを選びました。
しかし、私は小さな問題に遭遇します。同じ学生が 1 つの夏に 2 つの仕事をすることはできないため、重複を避ける必要があります。また、毎年、新しい学生が追加され、一部が削除されるため、これを柔軟にする必要があります。
この関数は、私が望むのとほぼ同じように機能します: =INDEX($A:$A,RANDBETWEEN(1,COUNTA($A:$A)),1)
インデックス $A:$A は、列 A のすべての行を取得します。したがって、20 個の名前を追加しても、それらが考慮されます。次に、行 1 と列 $A の合計行数 (COUNTA) の間の値 (名前) をランダムに選択します。この方法の問題点は、重複が許されることです。
私が見つけた別の関数は、=ALEA() でいっぱいの列を作成し、これらを数値でランク付けすることでした。これはあまりきれいではありませんが、少なくとも重複はありません。問題は、静的であり、柔軟にすることができない私の式から来ています。
=INDEX($A$2:$A$74,RANK(B2,$B$2:$B$74))
私の名前は列 $A にあり、私のランダムな値は列 $B にあります。私が言っているのは、列BにあるB2(次にB3、次にB4など)の値をランク付けすることです.
私が望むのは、COUNTA を 2 番目の関数に統合し、(可能であれば) ランク関数の代わりに RANDBETWEEN を使用して、醜い数値を持たないようにすることです。
ある種の重複チェックで最初の関数を使用するために開かれています。秘書が多くの操作を行う必要がない限り、それで問題ありません。
ご協力ありがとうございます xox