なんでもエクセル(Nandemo Excel)

何でもエクセルでやってしまう そこのあなた、ようこそ

数式/関数:組み合わせが重複しないよう総当たりで2つ抜き出す

昨日の足し算引き算ランダム出題のついでに、リストの中から総当たりの組み合わせを作る方法についても考えてみました。

というのもこれ、やることはそんなに変わらないんですよね。

組み合わせ表を作る

まずは対戦表というか組み合わせリストを作りましょう。ここでは重複は気にしなくていいです。後で分割するための区切り記号として「,」を間に挟んでいます。


=LAMBDA(配列,LET(     総数,ROWS(配列),     配列&","&TOROW(配列) ))(A:.A)

ここまでは簡単ですね。Excel2021なら、TOROW関数を TRANSPOSE関数に変えればいいです。

不要な値を除外する

必要なのは水色の値だけですから、いらないものは除外してしまいましょう。


=LAMBDA(配列,LET(     総数,ROWS(配列),     組み合わせ,配列&","&TOROW(配列),     条件計算,SEQUENCE(総数)<SEQUENCE(,総数),     IF(条件計算,組み合わせ,"") ))(A:.A)

リストを縦に組み替える

作ったリストから「A,B」を「A」と「B」に分割します。縦横スピルにしたいので、TEXTJOIN関数を使って「;」を区切り記号として1つの文字列に結合してから、TEXTSPLIT関数で縦横に分割してやります。やっていることは前回とほぼ同じです。


=LAMBDA(配列,LET(     総数,ROWS(配列),     組み合わせ,配列&","&TOROW(配列),     条件計算,SEQUENCE(総数)<SEQUENCE(,総数),     重複除外,IF(条件計算,組み合わせ,""),     TEXTSPLIT(TEXTJOIN(";",,重複除外),",",";") ))(A:.A)

以上で完成です。抜き出し数が2つだったらこれで済みます。