[[20220202142125]] 『マクロ VLOOKUPについて』(ちしもちか) ページの最後に飛ぶ

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

 

『マクロ VLOOKUPについて』(ちしもちか)

Sheet1にA列〜M列に2000件ほどのデータがあります。Sheet3のJ列をVLOOKUPで検索して、Sheet1の同じJ列にあるデータをSheet3のJ列に抽出するようにマクロコードを下記に示しています。設定の仕方が悪いのか、思うようなデータが得られません、どのような設定にしたらよいか、教えてもらえませんでしようか。よろしくお願いします。
なお、これでやると、OutputRange = SearchArrのところがエラーになってしまいます。アプリケーション定義、オブジエクション定義のエラーになってしまいます。

Sub Sample()

    Dim SerchKey As Range '検索値
    Dim SerchArr As Variant '検索用格納配列
    Dim OutputRange As Range '出力範囲
    Dim i As Long

    Set SerchKey = Worksheets("Sheet3").Range("A2:A1300")
    Set OutputRange = Worksheets("Sheet3").Range("J2:J1300")

    SearchArr = Range(SerchKey, OutputRange)

    For i = 1 To SerchKey.Rows.Count
        SearchArr(i, 1) = "=VLOOKUP(A" & i + 1 & ",Sheet1!$A$2:$K$1300,10,0)"
    Next

    OutputRange = SearchArr

End Sub

< 使用 Excel:Excel2016、使用 OS:Windows10 >


要件が分かりにくいので、具体例を書いてもらえませんか?
(γ) 2022/02/02(水) 15:08

すみません、VLOOKUP関数をVBAで高速に処理したいということです。

Sheet3のJ2:J1300に

Sheet1!$A$2:$K$1300のデータから

抽出したいということです。
(ちしもちか) 2022/02/02(水) 15:18


 >エラーになってしまいます。
 >高速に処理したいということです。
 内容が食い違っていますね。
 高速に処理したいということは、提示されているコードに問題がないということになりますけど。
(・・・) 2022/02/02(水) 15:31

 SearchArr = Range(SerchKey, OutputRange)
  コンパイルエラー:変数が定義されていません
 SearchArr(i, 1) = "=VLOOKUP(A" & i + 1 & ",Sheet1!$A$2:$K$1300,10,0)"
  コンパイルエラー:SubまたはFunctionが定義されていません。
 OutputRange = SearchArr
  コンパイルエラー:変数が定義されていません

 Dim SerchArr As Variant なのに SearchArr になっている(a が余分)

 上記を修正したうえで実行したら提示されたようなエラーは出なかった。
 空のデータなのでJ列は #N/A と表示された。
 J2 の数式は「=VLOOKUP(A2,Sheet1!$A$2:$K$1300,10,0)」となっている。

 以上エラーの検証結果でした。 

 J列の表示と数式の結果です。

     |[J] 
 [1] |    
 [2] |#N/A
 [3] |#N/A
 [4] |#N/A
 [5] |#N/A
 [6] |#N/A
 [7] |#N/A
 [8] |#N/A
 [9] |#N/A
 [10]|#N/A

     |[J]                                   
 [1] |                                      
 [2] |=VLOOKUP(A2,Sheet1!$A$2:$K$1300,10,0) 
 [3] |=VLOOKUP(A3,Sheet1!$A$2:$K$1300,10,0) 
 [4] |=VLOOKUP(A4,Sheet1!$A$2:$K$1300,10,0) 
 [5] |=VLOOKUP(A5,Sheet1!$A$2:$K$1300,10,0) 
 [6] |=VLOOKUP(A6,Sheet1!$A$2:$K$1300,10,0) 
 [7] |=VLOOKUP(A7,Sheet1!$A$2:$K$1300,10,0) 
 [8] |=VLOOKUP(A8,Sheet1!$A$2:$K$1300,10,0) 
 [9] |=VLOOKUP(A9,Sheet1!$A$2:$K$1300,10,0) 
 [10]|=VLOOKUP(A10,Sheet1!$A$2:$K$1300,10,0)
(nm) 2022/02/02(水) 16:27

 1.Serch○と
   Search○が混在していますが、大丈夫ですか?

 2.Sheet3と言うシートは存在していますか?

 3.数式を入れるのなら、ループさせなくても出来ますよ。(配列を用意する必要もないです)

(半平太) 2022/02/02(水) 16:39


 Sub Sample()
    Dim OutputRange As Range '出力範囲

    Set OutputRange = Worksheets("Sheet3").Range("J2:J1300")
    OutputRange = "=VLOOKUP(A2,Sheet1!$A$2:$K$1300,10,0)"

 End Sub

(マナ) 2022/02/02(水) 17:18


すみません、初歩的なミスを犯していました。Sheet3・Sheet1は仮称の名前でした。これをコピペする時におかしくなっていたようでした。改めて最初からやり直して間違いにきづきました。大変皆様にご迷惑かけてしまいました。心からお詫び致し飲ます。すみませんでした。修正して完成できました。ほんとうに申し訳ありません。今後このようなことがないようにしますので、ご勘弁ください。
(ちしもちか) 2022/02/03(木) 11:38

コメント返信:

[ 一覧(最新更新順) ]


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