Excel: 2 つの条件を満たすテーブル内のランダム選択

Excel: 2 つの条件を満たすテーブル内のランダム選択

私のデータの例は次のとおりです。

Name:        Office:   Years:

John Smith   Canada      1

Bob Smith    Canada      1

Jake Smith   Canada      1

Sarah Smith  Canada      1

別のシートでは、Office と Years に基づいてランダムな名前を出力したいと考えています。数式を下にドラッグすると、毎回異なる名前が付けられるようにしたいのですが (ここで行き詰まっています)。いくつかの数式を試しましたが、これが最も近いものです。

=INDEX($B$2:$B$436,MATCH(SMALL(IF($D$2:$D$436&$F$2:$F$436=$H$3&$I$3,$G$2:$G$436),1),$G$2:$G$436,0))

列B = 名前 列D = オフィス 列F = 年数 H3とI3は参照値です

列Gは乱数の集合です = rand()

答え1

ランダム化を数式自体に組み込みます。必要に応じて、これを別の列に組み込むこともできます。

列Aは名前、
列Bはオフィス、
列Cは年です

セルG2はあなたが興味を持っているオフィスです。
セルG3はあなたが興味を持っている年です。

=INDIRECT("A"&LARGE(IF($B$2:$B$7=G2,IF($C$2:$C$7=G3,ROW($A$2:$A$7),0),0), RANDBETWEEN(1,COUNTIFS(B:B,G2,C:C,G3))))

これは配列数式なので、Ctrl+ Shift+ を使用して入力する必要がありますEnter

これは、条件に一致した場合は行番号、一致しなかった場合はゼロを含む配列を作成することで機能します。次に、番目に大きい値、ここで1 から条件に一致する行数までの乱数です。

答え2

A2の下の名前を返す場合(A1はヘッダーまたは空白)、A2でこの配列数式を使用します。

=INDEX($B$2:$B$436,SMALL(IF(($D$2:$D$436=$H$3)*($F$2:$F$436=$I$3)*(COUNTIF(A$1:A1,$B$2:$B$436)=0),ROW($B$2:$B$436)-ROW($B$2)+1),RANDBETWEEN(1,SUM(($D$2:$D$436=$H$3)*($F$2:$F$436=$I$3)*(COUNTIF(A$1:A1,$B$2:$B$436)=0)))))

CTRL+ SHIFT+で確定しCTRL、下にコピーします。関数A$1:A1内の範囲を変更してCOUNTIF、開始セルの上のセルと一致させます。

注: - この方法では乱数の列は必要ありません

関連情報