[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VLOOKUPの範囲を別シートから選択したい。』(操舵)
マクロ初心者ですが、マクロの記録を使って作成しております。
A3のセルにVLOOKUPの数式を入れたいと思っており、シートの範囲は可変となるように別シートのB:Cを選択にしたいと思っております。
下記の数式を入れると、別シートではなく、選択しているA3セルのシートを範囲として指定してしまいます。
ここから、別シートの範囲を指定するにはどうしたら良いでしょうか…?
【別シート(シート1)】
A B C 1 ー 2 ー 3 ー
【現在の数式】
Range("A3").Select
ActiveCell.FormulaR1C1 = _ "=VLOOKUP(RC[5],'シート1'!B:C,2,FALSE)"
< 使用 Excel:Excel2010、使用 OS:Windows10 >
> "=VLOOKUP(RC[5],'シート1'!B:C,2,FALSE)" "=VLOOKUP(RC[5],シート1!C[1]:C[2],2,FALSE)"
こうじゃないですか?
(半平太) 2022/11/18(金) 15:44:47
同じマクロ内にA:Cを列を参照したいものがあるのですが、こちらも教えていただけないでしょうか。
仕組みが良く分かっておらず…
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-2],'シート2!'!A:C,3,FALSE) (操舵) 2022/11/18(金) 16:32:45
>仕組みが良く分かっておらず…
FormulaR1C1 Formula
上の2つの違いを理解する必要があります。
> A:Cを列を参照したいものがある 必ずA:Cの列なら、絶対参照なので(第1列から第3列を指定することであり)
>"=VLOOKUP(RC[-2],'シート2!'!A:C,3,FALSE) ↓ "=VLOOKUP(RC[-2],シート2!C1:C3,3,FALSE)"
(半平太) 2022/11/18(金) 17:30:03
FormulaR1C1 Formula 上記の違いなのですね…学校で習ったような記憶があります… 絶対参照だから、ということですね。
やっと、マクロがエラーなく動きました!!!
有難うございました!!!
(操舵) 2022/11/18(金) 17:37:23
■1
質問とは関係ないですが、VBAの世界では基本的にシートやセル(オブジェクトといいます)をアクティブにすれば、いちいち選択したりアクティブにしたりする必要はありません。
また、標準モジュールでシートの指定を省略した場合、ActiveSheetを指定したとみなされるルールです。
よって、可読性の観点からも対象のオブジェクトをきちんと指定して、Active○○やSelectionに頼らないコードにすることをお勧めします。
■2
>仕組みが良く分かっておらず…
無理にR1C1形式で考える必要もないのでは?
Sub 研究用() With ActiveSheet .Range("A3").Formula = "=VLOOKUP(F3,シート1!B:C,2,FALSE)" .Range("A5").Formula = "=VLOOKUP(F5,シート1!A:C,2,FALSE)" '↑ 書き換える ↑ End With End Sub
(もこな2) 2022/11/18(金) 17:41:58
> FormulaR1C1 > Formula >上記の違い >絶対参照だから、ということですね。
違います。ネットで検索して、自習をお願いします。
(半平太) 2022/11/18(金) 18:03:46
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.