
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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロを簡潔にしたい 6 2022/09/16 10:37
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) エクセルでエラーを無視して一番左側のセルの値を返したい 2 2023/07/27 13:06
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Excel(エクセル) VBA でvlookup エラーなどは削除したい 8 2022/12/30 04:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル 指定した文字列を含...
-
エクセルvba 一つ上の行を指定...
-
A列の下2桁だけが連番でなかっ...
-
COUNTIFで任意のセルを検索範囲...
-
エクセル マクロで列を連続し...
-
別シートにデータをコピーする...
-
エクセル 2010 マクロ 残セル表...
-
vlookup関数詳しい方おしえてく...
-
エクセルVBA Unionはなぜ遅い?
-
エクセルで一部除外した数字を...
-
エクセルの印刷範囲について
-
エクセルで列内の同じIDの商品...
-
Excelで数値→文字列変換で指数...
-
Excelの関数について、特定の文...
-
Excelで行ごとコピー、同じ行を...
-
エクセルにおける、グラフの指...
-
エクセルでグラフタイトルが折...
-
テキストボックス内の文字のふ...
-
エクセル
-
日付が1年以内になると他のセル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル 指定した文字列を含...
-
桁数が混在する並び替えの方法
-
エクセルで一部除外した数字を...
-
エクセルVBA Unionはなぜ遅い?
-
EXCEL VBA 指定範囲内で特定の...
-
エクセルvba 一つ上の行を指定...
-
エクセルで2列を検索し2列とも...
-
エクセル マクロで列を連続し...
-
エクセルの関数SUBSTITUTEを、...
-
Excelで自動的に並べ替えなんて...
-
EXCELである列を上から順にチェ...
-
エクセルで同じ名前ごとの合計...
-
ExcelVBA:列方向の並び替え O...
-
FIND関数について教えてください
-
エクセルで列内の同じIDの商品...
-
【急】エクセル こんなときの...
-
EXCEL 指定した曜日に番号を振...
-
エクセルマクロでA欄に値があ...
-
エクセルに詳しい人!!!至急...
-
Excelでの並べ替え
おすすめ情報