0

次のような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 は将来変更される可能性があるため、そのように直接入れたくはありません。そのため、列見出しが何であれ使用する必要があります。

4

1 に答える 1