私のデータの例は次のとおりです。
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
、開始セルの上のセルと一致させます。
注: - この方法では乱数の列は必要ありません