[[20110518211549]] 『マクロで張り付けた関数のセル番地が変わってくれ』(KI) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロで張り付けた関数のセル番地が変わってくれない』(KI)

 マクロ超初心者なので、ばかばかしい質問になりますが
 宜しくお願いします。

 下のように、E1:F6 にリストがあります。
 そして、A2 を検索値にして VLOOKUP で答えを
 求めるために、次のような記述をしました。

 Sub test1()

 Range(Cells(2, 2), Cells(4, 2)) = "=VLOOKUP(A2,$E$1:$F$6,2,FALSE)"

 End Sub

 これにより、B2:B4 には、正しくVLOOKUPの数式が書き込まれました。

 次に、10行下の A12 の検索値に対応させるために下のような記述をしました。

 Sub test2()

 k = 10  'オフセット量

 Range(Cells(2 + k, 2), Cells(4 + k, 2)) = "=VLOOKUP(A2,$E$1:$F$6,2,FALSE)"

 End Sub

 ここで質問なのですが、B12 には
 =VLOOKUP(A2,$E$1:$F$6,2,FALSE)
 と書き込まれてしまいます。
 私の思いは、
 =VLOOKUP(A12,$E$1:$F$6,2,FALSE)
 となって、VLOOKUP の検索値も A2 から A12 へと
 勝手に変わってくれるものと考えていました。

 K=10 としているので、数式を書き込む行は正しく行われているのに
 数式の中の検索値の部分は勝手に変わってくれないのですね。

      	[A]	[B]	[C]	[D]	[E]	[F]
 [1]	検索値	答え	     	     	品名	個数
 [2]	c	3	     	     	a	1
 [3]	a	1	     	     	b	2
 [4]	b	2	     	     	c	3
 [5]	     	     	     	     	d	4
 [6]	     	     	     	     	e	5
 [7]	     	     	     	     	     	     
 [8]	     	     	     	     	     	     
 [9]	     	     	     	     	     	     
 [10]	     	     	     	     	     	     
 [11]	     	     	     	     	     	     
 [12]	e	3	     	     	     	     
 [13]	d	1	     	     	     	     
 [14]	a	2	 

 このような場合には VLOOKUP の中はどのようにすれば良いのでしょうか?
 くだらない質問をしているなということは、自分でも感じているのですが
 宜しくお願いします。
     (KI)


 B2セルに「=VLOOKUP(A2,$E$1:$F$6,2,FALSE)」の式を入れる動作を
 マクロの記録にとると、数式部分もコードに成ります。

 出来た数式をコピーして、現在出来ているコードの該当部分に貼り付けて使うと
 ご希望の様に成りそうに思います。

 まぁ「A2」の 2 の所にも +k をするのでも良いと思いますが。。。

 数式ですが、「""」で囲われているので、文字列です。
 なので、思ったようなセル番地になった文字列が出来れば良いです。
 "=VLOOKUP(A2,$E$1:$F$6,2,FALSE)"
    ↓
 "=VLOOKUP(A" & 2 & ",$E$1:$F$6,2,FALSE)"
               ~~~ここを 2+k にすると kが10の時 12 に成ります。

 (HANA)

 相対アドレスの特徴を使うなら・・・、

 Sub rangetest()
    Dim k As Long
    k = 10
    With Union(Range(Cells(2, 2), Cells(4, 2)), _
            Range(Cells(2 + k, 2), Cells(4 + k, 2)))
       .Formula = "=VLOOKUP(A2,$E$1:$F$6,2,FALSE)"
    End With
 End Sub

 ichinose


 いろいろな書き方がありますが、こんなのも。
 Sub RCtest()
    Const k = 10
    Range("B2:B4").Offset(k, 0).FormulaR1C1 = "=VLOOKUP(RC[-1],R1C5:R6C6,2,FALSE)"
 End Sub
 (Mook)

 皆様、早速のご回答有難うございます。 
 どの、やり方も試してみました 。 
 なるほど! と、感じました。

 マクロは自動記録をしたものに
 ほんの少し手を加える程度のことしか
 出来ませんが、この学校で目にとまった
 面白そうな方法などを参考に手探りで
 やっているような状態です。
 皆様これからも、宜しくお願いします。
    (KI)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.