電子書籍の厳選無料作品が豊富!

エクセル2016
マクロで Range("A1") = "=VLOOKUP(R[1]C,B:C,2)" を実行した結果、
セルA1の結果が =VLOOKUP(A2,B:A:A,2) となり、指定範囲が壊れます。

「B:C」が「B:A:A」となってしまうのは何故でしょうか。
「E:G」を指定した際は「E:(G)」となります。

A 回答 (1件)

こんにちは、


>"=VLOOKUP(R[1]C,B:C,2)"
R[1]Cは、R1C1形式なので 1つ下のセル

>「B:C」が「B:A:A」となってしまうのは何故でしょうか。
R1C1形式なので
B:CのB:は単なる文字列でCはカラムになりナンバーが省略されているので A列
VLOOKUPの2番目の引数は範囲なので C は A:A となります。

従って =VLOOKUP(A2,B:A:A,2) となります。

R1C1形式とA1形式を混在させている理由は分かりませんが、

R1C1形式でVLOOKUP関数を書くなら、ActiveCell.FormulaR1C1 = "=VLOOKUP(R[1]C,C[1]:C[2],2)" な形ではないでしょうか

VBAですべてA1形式で書くなら
ActiveCell.Formula = "=VLOOKUP(" & ActiveCell.Offset(1).Address(0, 0) & ",B:C,2)"

かな
    • good
    • 2
この回答へのお礼

ありがとうございました。理解しました。
R1C1形式が全体に及ぶものと考えていませんでした。

特定セルへ入力した後、最下行まで貼り付けるマクロを組んでいて、
変動する第一引数のみをR1C1形式とすることで足るものと思い込んでいました。

お礼日時:2020/08/29 20:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!