- ベストアンサー
VBAで変数を関数の中で使用する方法について
- VBAで関数内で変数を使用する方法について教えてください。
- 特に、LOOKUP関数の対応範囲を変数として使用する方法について教えてください。
- また、他に効果的な方法があれば教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
こんな感じになります。 Sub test() Dim ix As Long For ix = 1 To 30 Cells(ix, 1).FormulaR1C1 = "=LOOKUP(R7C3,原紙!R15C5:R15C50,原紙!R" & _ 16 + (ix - 1) * 51 & "C5:R" & 16 + (ix - 1) * 51 & "C50)" Next ix End Sub 本来、「16 + (ix - 1) * 51」のところは、Cstr関数で文字列に変換する方が正しいのですが、このような場合VBAは自動的に数値を文字列に変換して結果を出してくれますので、手を抜いています。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルVBAで関数を使う方法 (1)左辺にFormula=とし、右辺に式を””で囲って書くやり方。””の中はセルに関数をセットするのと同じ表現でよい。(#1のご回答) (2)WorksheetFunctionを使う方法。 注意事項は (A)エクセルで使える関数のうち、WorksheetFunctionでは使えないものがあります。 引数の中で、セル範囲を指定する部分は、Range(・・・)で指定します。Cells(・・)も使えますが、1セルで ないときは、Range(Cells(・・),Cells(・・))のような表現になります。 (3)LOOKUP関数はWorksheetFunctionで使えます。(本を見れば、使えるかどうか書いてある本もあります。) (4)LOOKUP関数は2様式あって、ベクトル形式の方でしょう。 (5)引数は3つで、検査値、検査範囲、対応範囲です。 (6)本件で、検査値はCells(7,3)で変らず。 (7)検査範囲もRange(Sh2.cells(15,5),Sh2.Cells(15,50)) で変らず。 (8)対応範囲は変って行き Range(Sh2.Cells(x,5),Sh2.Cells(x,50))のXを初期値16、増分51で変化させれば良いと思う。 For x=16 to 終値 step 51 のように。 (9)なおセルの前にSh2は Dim sh2 As Worksheet Set Sh2=Worksheets("原紙")としておくこと。