次のようなExcelのテーブルがあります。
A C D
0 0.00% 0.00% 0.00%
473 0.00% 0.00% 3.40%
641 13.80% 13.80% 10.40%
646 13.80% 13.80% 10.40%
3337 13.80% 13.80% 13.80%
3454 13.80% 13.80% 13.80%
関数の形式は myFunction(x,y,thresholds_table) で、x は A、C、または D で、thresholds_table はテーブル全体です。この関数では、x の値に応じて 3 つの列のいずれかから値を検索します。列を手動で指定すると (例: set r=2)、関数は正常に動作しますが、列の選択方法がわかりません。
私は VBA に不慣れで、配列スライスのサポートがはるかに優れたプログラミング言語に慣れているため、おそらくこれについて間違った方法で行っています。私が使用しようとしているコードは次のとおりです。
Dim rates As Range
rates = Application.WorksheetFunction.Index(thresholds_table, 1, 0)
r = Application.WorksheetFunction.Match(x, rates)
INDEX 関数を使用して一番上の行を選択してから、Match を使用して列のインデックスを見つけます。ただし、常に VALUE エラーが返されます。
これは単純に違いないように思えますが、多くのグーグル検索を行ったが、答えを見つけることができませんでした!
編集:
申し訳ありませんが、私は完全に明確ではありませんでした: "y" 引数は、関数のこの部分では使用されていません。基本的に、x=A の場合は 2、x=C の場合は 3、x=D の場合は 4 を返す関数が必要です。ただし、A/C/D は将来変更される可能性があるため、そのように直接入れたくはありません。そのため、列見出しが何であれ使用する必要があります。