当番表やローテーションが被らないよう、ランダムに組み合わせたいと考えた時、従来であれば数式でやるのはそれなりに大変だったんですが、Microsoft365ならそうでもないなと思った次第です。
例えば、5×5の枠に1~5の5つの数字を、縦横(斜めは除外)に重複しないようランダムで配置する場合で考えてみましょう。画像の場合なら、縦横の合計は全て「1+2+3+4+5」で「15」になるはずです。また重複を省いた数値の個数は「5」にならないといけません。
とりあえず、「1~5」の数字を横方向にだけ被らないように埋めるのなら簡単です。
=LAMBDA(n,MOD(SEQUENCE(n,n,0),n)+1)(5)
横だけ揃いました。ここから縦も揃える場合は、1行ごとに1個ずつ数字をずらして配置すればいいです。
=LAMBDA(n,TAKE(MOD(SEQUENCE(n,n+1,0),n)+1,,n))(5)
きれいに1個ずつズレましたね。これでひとまず、縦横が揃いました。
あとはこれをランダムに組み替えるだけです。縦横の位置をずらさないようにそれぞれソートをかけます。
=LAMBDA(n,SORTBY(SORTBY(TAKE(MOD(SEQUENCE(n,n+1,0),n)+1,,n), RANDARRAY(n)),RANDARRAY(,n)))(5)
SORTBY関数を縦横別々に2回かけるのがミソですね。
この方法を応用すれば、画像のような当番表をランダムに組み替えることもできますね。