Excel - CHOOSE のような、セル内の文字列に基づいて数値を返す関数はありますか?

Excel - CHOOSE のような、セル内の文字列に基づいて数値を返す関数はありますか?

=Func(A1, "Alex, "Betty", "Charlie")一致したエントリのインデックスを返す関数が必要です。この関数をB1:B13に配置すると、次のように表示されます。

"Charlie"   3
"Alex"      1
"Alex"      1
"Alex"      1
"Charlie"   3
"Charlie"   3
"Betty"     2
"Charlie"   3
"Charlie"   3
"Betty"     2
"Betty"     2
"Betty"     2
"Alex"      1

一見すると CHOOSE がこれを行うと思いましたが、これは整数に基づく参照を返すので、必要なものとは逆になります。

私が見逃した、これを実行する既存の関数はありますか? ネストされた if や vlookup など、より複雑な関数を作成する必要がありますか? または、VBA で関数を記述する必要がありますか?

お時間を割いてご協力いただきありがとうございました。

答え1

比較する値をスプレッドシート内の別の範囲に配置できる場合は、LOOKUP 関数を使用できます。LOOKUP は、2 番目の引数で指定された範囲内で最初の引数を検索し、3 番目の引数の範囲から対応する値を返します。必要な値を指定する範囲を追加する必要があります。

たとえば、F1:F3 と G1:G3 にルックアップ テーブルを作成します。

    FG
1 アレックス 1
2 ベティ 2
3 チャーリー 3

使用する関数は

    B
1 =LOOKUP(A1,$F$1:$F$3,$G$1:$G$3)
2 =LOOKUP(A2,$F$1:$F$3,$G$1:$G$3)

セル B1 では、LOOKUP は A1 ("Charlie") を検索し、それを F3 で見つけ、G3 から値 3 を返します。セル B2 では、LOOKUP は A2 ("Alex") を検索し、それを F1 で見つけ、G1 から値 1 を返します。

メイン シートにルックアップ テーブルを配置したくない場合は、ワークブック内の別のシートにルックアップ テーブルを配置することもできます。

答え2

ソース データがどのようになっているかは 100% わかりませんが、MATCH 関数は単一の値を調べて、配列内のその位置を返します。

A1:A4が

Alex
Betty
Charlie
Betty

そしてB1には

=MATCH(A1,$A$1:$A$4)

B1が戻ってくる

1

次に、B1 から B4 までを入力するだけで結果が得られます。

関連情報