こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルの関数の引数にVBAの変数を代入できますか?

質問のタイトルのままなのですが、今源泉徴収の
表を作成していて以下のエクセル標準関数を使用しています。そこで3の部分をVBAの引数を用いて代入したいのですが可能でしょうか?VLOOKUP関数に限らず、
エクセルの標準関数にVBAの変数を代入するのは無理なのでしょうか?

=VLOOKUP(J3:J30,源泉徴収税額表!A6:C383,3,TRUE)

(例)
=VLOOKUP(J3:J30,源泉徴収税額表!A6:C383,hensu,TRUE)
                              ↑
                   こういう事はできないのでしょうか?

投稿日時 - 2003-01-04 03:27:02

QNo.436734

困ってます

質問者が選んだベストアンサー

下記はご質問の意図とずれていますでしょうか。
hensuは第3引数で「列番号」ですね。これがVBAで
決まるのですか。
(1)VBAで求まった値を、どこかのセル(vlookupは縦列検索なので、すなわち同一列の1つのセル)にセットすればだめですか。バッチ処理的に一遍に全行値をセット(1列に)してしまうことになるでしょうが。
=VLOOKUP(A1,$D$1:$E$3,F1)という表現も可能でした。
F1に3が入っていて、3--->F1と表現。
(注)それと第1引数が範囲になっていますが、検索値の入っている1つのセルを指定するのではないですか。
(2)表引きまで含めてVBAで組んでしまうとか。
(3)Vlookup関数をWorksheetFunctionで処理するとか。
Sub test01()
For i = 1 To 5
Cells(i, 3) = WorksheetFunction.VLookup(Cells(i, 1), Range(Cells(1, 4), Cells(3, 5)), 2)
Next i
End Sub
が動きました。

投稿日時 - 2003-01-04 09:57:44

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

やや強引ですが、
一定値を返すユーザー関数にしては?

=VLOOKUP(J3:J30,源泉徴収税額表!A6:C383,hensu(),TRUE)

Function hensu()
hensu=3
End Function
って感じで・・・。

投稿日時 - 2003-01-04 13:08:55

あなたにオススメの質問