2つの基準に基づいて最終結果を見つける

2つの基準に基づいて最終結果を見つける

私は列 D と K の間の一致を識別しようとしています。そして、それらの一致のうち、どれが列 A と H に一致するかを調べます。基本的に、列 D (ABC) と A (123) はリンクされており、列 K (ABC) と H (123) はリンクされています。したがって、D (ABC) と K (ABC) の間の一致のうち、どれが A(123) と H(123) の間にも一致するかを調べます。列 D と K には一致する値が多数あることはわかっていますが、それらの一致のうち、どれが対応する列 A と H にも一致するかだけを調べます。

そこで、試合結果のリストを次のようにしたい(最終結果):1. D & K、次に2. A & H

つまり、#1 に一致するものは 3,546 個ある可能性がありますが、そのうち #1 と #2 の両方に該当するのは 450 個だけです。これは IF/THEN シナリオのようなものです。Excel では vlookup オプションだと思いますが、うまく動作しません。また、Access クエリでシート 1 とシート 2 を比較し、シート 1 の列 A とシート 2 の列 A およびシート 1 の列 B とシート 2 の列 B の間の一致を示すシート 3 を取得できると思います。

答え1

質問を正しく理解していれば、列 A から始まり、少なくとも列 K まで続く値のテーブルがあるということですね。次の順序で 2 セットの行を含むテーブルを返したいのだと想定しています。

  1. D 列と K 列の値が一致し、A 列と H 列の値が一致するもの。
  2. 列 A と列 H の値のみが一致するもの。

たとえば、データが A2:K1001 の範囲内にあると仮定すると、次の方法により目的の結果を得ることができます。この方法では、ヘルパー列を 1 つ使用します。

セル M2 に次の数式を入力し、セル M1001 までコピーします。

  =IF(A2<>H2,2,IF(D2=K2,0,1))*ROWS($A$2:$A$1001)+ROWS($A$2:A2)

数式は各行に番号を割り当てます。列 D と K および列 A と H の両方が一致する場合、番号は 1 ~ 1000 の間になります。列 A と H のみが一致する場合、番号は 1001 ~ 2000 の間になります。それ以外の場合、番号は 2001 ~ 3000 の間になります。

次に、セル M1 に次の数式を入力します。返される行数 (つまり、列 D と K、および列 A と H の値が適切に一致する行数) が計算されます。

  =COUNTIF($M$2:$M$1001,"<"&ROWS($M$2:$M$1001)*2+1)

次に、セル N2 に数式を入力します。この数式を横方向および縦方向にコピーすると、必要なデータ行が返されます。

  =INDEX(A$2:A$1001,MATCH(SMALL($M$2:$M$1001,ROWS($M$2:M2)),$M$2:$M$1001,0))

SMALL 関数は、数式の中央から外側に向かって、割り当てられた数値の n 番目に小さい値、つまり最小値、次に 2 番目に小さい値、というように計算します。MATCH 関数は、その数値 (およびデータ テーブル内の対応する行) が M 列の何行下にあるかを計算します。最後に、INDEX 関数は、A 列の何行下にあるかのデータ値を返します。

最後に、数式をセル Y2 にコピーしてデータの最初の行全体を取得し、それらの数式をセル M1 に表示されている行数だけ下にコピーします。

関連情報