it-swarm-ja.com

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
user356552

数式自体にランダム化を入れます。必要に応じて、これをいつでも別の列に配置できます。

列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

これは、行番号(基準が一致する場合)またはゼロ(一致しない場合)を持つ配列を作成することによって機能します。それからそれはかかります nここで、nは、1から基準に一致する行数までの乱数です。

2
gtwebb

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 コピーダウン-開始セルの上のセルに一致するように、COUNTIF関数のA$1:A1範囲を変更します。

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

0
barry houdini