この数式が 2 つ以上の列に必要な場合は、次の数式を使用します。
=INDEX(Sheet1!C1:G1,SUMPRODUCT((Sheet1!C2:G6=B1)*COLUMN(Sheet1!C2:G6)))
次のような設定があるとします。

Sheet2 の B1 に Name3 を入力すると、以下に示すように TEAM1 が返されます。

この式の唯一の問題は、データの前に列数を指定する必要があることです。そのため、次のようなテーブルがある場合:

次に、データの開始前に 2 行あることを数式に伝える必要があります。新しい数式は次のようになります。
=INDEX(Sheet1!C1:G1,SUMPRODUCT((Sheet1!C2:G6=B1)*COLUMN(Sheet1!C2:G6))-2)
最後の括弧の前にあることに注意してください-2
。これは、データの前に 2 つの列があることを示しています。
NAME20 を検索した場合の新しい結果は次のようになります。
*説明: *
数式は次のように機能します。見やすくするためにすべてを 1 ページで行い、Sheet2!B2 と B6 の代わりに G2 と G6 をデータと同じシートで使用します。
まず、範囲 A1:E6 のすべての値を見て、名前が一致する値を見つけます。
=A1:E6=G2
これをセルに入力すると#VALUE
、が表示されますが、数式バーに移動して押すF9
と、数式の完全な値が表示されます
{FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,TRUE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE}

これで、1 つのセルに検索した名前が含まれていることがわかります。これは、TRUE
SUMPRODUCT のような数式を使用するFALSE = 0
と、TRUE = 1
したがって、列を取得するには、すべての結果を列で乗算します。
=SUMPRODUCT((A1:E6=G2)*COLUMN(A1:E6))
したがって、=G2 でないセルはFAlSE
またはであり、そのセルの列に( =であるため)0
を掛けると、単純に になります。しかし、ISまたはそのセルの列に(=のため)を掛けると、その積はセルの列番号になります0
false
0
0
TRUE
1
1
TRUE
1
NAME13
したがって、sumproduct の結果を探すときの図に示すように、 3 (その列) です。
次に、TEAM
その名前を返すために、INDEX 関数を使用して、指定された座標のセルに値を返します。
この場合、A1:E1
一致した名前と同じ列にある値が必要です。配列として見ると、A1:E1
次のようになります
{"TEAM1","TEAM2","TEAM3","TEAM4","TEAM5"}
そして、セルの列番号と同じ位置でその配列の値を返したいのですが、データの前に含まれていない列を-2
引いたものです。
そう:
=INDEX(A1:E1,SUMPRODUCT((A1:E6=G2)*COLUMN(A1:E6)))
この例では、Excel はこの数式を次のように解釈します。
からの値のリストの 3 番目の値 (3 は前述の sumproduct から取得されます) を返しますA1:E1
。そして、その値はTEAM3
.