
VBA初心者であるのでどなたかお助けいただけますと幸いです。
Sheet2のセルに、Sheet3に同じくVBAで用意するピボットをデータテーブルとしたVlookup関数をFormula関数で入力したのですが、下記で処理するとどうしてもすべて0(エラー)となってしまいます。
列番号をMatch関数で参照するところでうまくいっていないことはわかるのですが、どのように対応すればいいか、どなたかお知恵いただけますでしょうか・・・
For i = 1 To X
K = Worksheets(1).Range("A1") + i
'Match関数において、検索値を変数にする
(Sheet(1)で設定している列番号からループで右に処理していく)
Set d = Worksheets(2).Cells(1, K)
'Match関数において、Sheet(2)の1行目・変数K列を検索値とする
Set pd = Worksheets(3).Range("2:2")
'Match関数において、Sheet(3)の2行目にあるピボットテーブルの行ラベルを検索範囲とする
Set arr = Worksheets("ピボット").Range("A4").CurrentRegion.Offset(1, 0)
On Error Resume Next
retsu = WorksheetFunction.Match(d, pd, 0)
'Vlookup関数の列番号をMatch関数で可変させる
Worksheets(2).Select
If retsu <> "" Then Range(4, K).Formula = "=IFERROR(Vlookup(C2, " & arr.Address(External:=True) & ", Match(d, pd, 0) , False),0)"
If retsu = "" Then Cells(4, K).Formula = "0"
Next i
どなたかお助けいただけますでしょうか・・・・
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
エラーが出ない様に書き直してみました。
各シートのデータの配置等が不明、変数の型が不明ですので推測しました。
諸々修正すべき箇所があるかもしれません。
Dim X as long
Dim i As Long
Dim k As Long
Dim d As String
Dim pd As Range
Dim arr As Range
Dim retsu As Long
X = 100 'この値は適当にいれました
For i = 1 To X
k = Worksheets(1).Range("A1").Value + i
d = Worksheets(2).Cells(1, k).Value
Set pd = Worksheets(3).Range("2:2")
Set arr = Worksheets("ピボット").Range("A4").CurrentRegion.Offset(1, 0)
retsu = 0
On Error Resume Next
retsu = WorksheetFunction.Match(d, pd, 0)
On Error GoTo 0
Worksheets(2).Activate
If retsu > 0 Then
Worksheets(2).Cells(4, k).Formula = "=IFERROR(VLookUp(C2, " & arr.Address(External:=True) & "," & retsu & ", False), 0)"
ElseIf retsu = 0 Then
Worksheets(2).Cells(4, k).Formula = "0"
End If
Next i
siffon9様
つたない説明を読み取って丁寧にご回答頂きありがとうございます…ご教示いただいた内容で修正したところ期待していた動きをしてくれました!!本当にありがとうございます。記載下さったErrorの回避方法含めきちんと勉強していきたいと思います。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別シートにデータをコピーする...
-
エクセルのソートの方法
-
エクセルで一部除外した数字を...
-
エクセルvba 一つ上の行を指定...
-
Excel 複数キーワードの確認方法
-
VBA マクロの組み方
-
VBAでFormula関数を使ってVlook...
-
困っています Excelでデータ参...
-
エクセル 指定した文字列を含...
-
エクセルで同じ名前ごとの合計...
-
エクセルマクロでA欄に値があ...
-
Excelで数値→文字列変換で指数...
-
y/xが単調増加だとそのグラフが...
-
テキストボックス内の文字のふ...
-
エクセルにおける、グラフの指...
-
Excelで行ごとコピー、同じ行を...
-
C+vのvは英語で何の頭文字...
-
excel 表計算 加算するセルが空...
-
Wordで文字をコピー・ペースト...
-
wordでグラフを挿入したいので...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル 指定した文字列を含...
-
桁数が混在する並び替えの方法
-
エクセル マクロで列を連続し...
-
エクセルで一部除外した数字を...
-
エクセルvba 一つ上の行を指定...
-
EXCEL 指定した曜日に番号を振...
-
エクセルで2列を検索し2列とも...
-
エクセルVBA Unionはなぜ遅い?
-
エクセルの関数SUBSTITUTEを、...
-
エクセルで同じ名前ごとの合計...
-
Excelで自動的に並べ替えなんて...
-
EXCEL VBA 指定範囲内で特定の...
-
エクセルで列内の同じIDの商品...
-
EXCELである列を上から順にチェ...
-
ExcelVBA:列方向の並び替え O...
-
関数の引数の読み方
-
エクセル 2010 マクロ 残セル表...
-
エクセルマクロでA欄に値があ...
-
vlookup関数詳しい方おしえてく...
-
エクセルのソートの方法
おすすめ情報