[[20221118133033]] 『VLOOKUPの範囲を別シートから選択したい。』(操舵) ページの最後に飛ぶ

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

 

『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 >


addressを調べてください。
(トーマス) 2022/11/18(金) 14:23:57

 >  "=VLOOKUP(RC[5],'シート1'!B:C,2,FALSE)"
     "=VLOOKUP(RC[5],シート1!C[1]:C[2],2,FALSE)"

 こうじゃないですか?

(半平太) 2022/11/18(金) 15:44:47


トーマスさん、半平太さん
有難う御座います。
=VLOOKUP(RC[5],シート1!C[1]:C[2],2,FALSE)にて無事解決しました。

同じマクロ内に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.