[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロ 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 >
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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.