前提・実現したいこと
シートA,B,C,Dの各対象の列をfor文でループさせ、シート1,2,3,4,5の対象データを取得しようと
しています ※A,B,C,Dでひとつのブック。1,2,3,4,5でひとつのブックとなります。
ただし、シートAのみシート1,2のデータを取得しなければいけない状況です。
シートAとシート1,2のような関係性が今後出てくる可能性があります。
追記
1,下記ソースコードに記載しているplateという変数ですが、3から開始で正しいです。
シート1,2,3,4,5は正しくはシート〇,〇,1,2,3,4,5となります。
2,下記ソースコードのファイル名に関してはブックHがシートA,B,C,D側
ブックGが1,2,3,4,5側になります。
発生している問題・エラーメッセージ
シートAにシート1,2が反映できず、最後まで到達しても2のデータが
取得できない状況です。
該当のソースコード
vba
1Sub transfer() 2 3 '後処理でファイル開く 4 Workbooks.Open "C:\Users\admin\Desktop\H.xlsx" 5 6 '請求書雛形 7 Dim wb1 As Workbook 8 Set wb1 = Workbooks("G.xlsm") 9 plate = 3 10 11 'H.xlsxのシート 12 With Workbooks("H.xlsx") 13 For shename = 1 To Worksheets.Count 14 M_range = 11 15 16 For priname = 7 To Cells(Rows.Count, 5).End(xlUp).Row + 1 17 18 If .Worksheets(shename).Range("E" & priname) = wb1.Worksheets(plate).Name Then 19 If .Worksheets(shename).Range("G" & priname) = wb1.Worksheets(plate).Range("I" & M_range) Then 20 If .Worksheets(shename).Range("H" & priname) = wb1.Worksheets(plate).Range("J" & M_range) Then 21 22 23 '取得したいデータ(1) 24 If wb1.Worksheets(plate).Range("N" & M_range) <> "" Then 25 .Worksheets(shename).Range("L" & priname) = wb1.Worksheets(plate).Range("N" & M_range) 26 End If 27 28 '取得したいデータ(2) 29 If wb1.Worksheets(plate).Range("O" & M_range) <> "" Then 30 .Worksheets(shename).Range("M" & priname) = wb1.Worksheets(plate).Range("O" & M_range) 31 End If 32 33 '取得したいデータ(3) 34 If wb1.Worksheets(plate).Range("P" & M_range) <> "" Then 35 .Worksheets(shename).Range("N" & priname) = wb1.Worksheets(plate).Range("P" & M_range) 36 End If 37 38 '取得したいデータ(4) 39 If wb1.Worksheets(plate).Range("Q" & M_range) <> "" Then 40 .Worksheets(shename).Range("O" & priname) = wb1.Worksheets(plate).Range("Q" & M_range) 41 End If 42 43 '取得したいデータ(5) 44 If wb1.Worksheets(plate).Range("R" & M_range) <> "" Then 45 .Worksheets(shename).Range("P" & priname) = wb1.Worksheets(plate).Range("R" & M_range) 46 End If 47 48 '取得したいデータ(6) 49 If wb1.Worksheets(plate).Range("Z" & M_range) <> "" Then 50 .Worksheets(shename).Range("Q" & priname) = wb1.Worksheets(plate).Range("Z" & M_range) 51 End If 52 53 '取得したいデータ(7) 54 If wb1.Worksheets(plate).Range("T" & M_range) <> "" Then 55 .Worksheets(shename).Range("R" & priname) = wb1.Worksheets(plate).Range("T" & M_range) 56 End If 57 58 '取得したいデータ(8) 59 If wb1.Worksheets(plate).Range("V" & M_range) <> "" Then 60 .Worksheets(shename).Range("S" & priname) = wb1.Worksheets(plate).Range("V" & M_range) 61 End If 62 63 '取得したいデータ(9) 64 If wb1.Worksheets(plate).Range("W" & M_range) <> "" Then 65 .Worksheets(shename).Range("T" & priname) = wb1.Worksheets(plate).Range("W" & M_range) 66 End If 67 68 '取得したいデータ(10) 69 If wb1.Worksheets(plate).Range("Y" & M_range) <> "" Then 70 .Worksheets(shename).Range("U" & priname) = wb1.Worksheets(plate).Range("Y" & M_range) 71 End If 72 73 '取得したいデータ(11) 74 If wb1.Worksheets(plate).Range("AA" & M_range) <> "" Then 75 .Worksheets(shename).Range("V" & priname) = wb1.Worksheets(plate).Range("AA" & M_range) 76 End If 77 78 '取得したいデータ(12) 79 If wb1.Worksheets(plate).Range("AB" & M_range) <> "" Then 80 .Worksheets(shename).Range("W" & priname) = wb1.Worksheets(plate).Range("AB" & M_range) 81 End If 82 End If 83 End If 84 M_range = M_range + 1 85 End If 86 Next priname 87 plate = plate + 1 88 Next shename 89 End With 90 MsgBox "ok" 91 92End Sub
試したこと
for文の中の変数plateの足し算をfor文の外でしてみましたが
結果的に思ったような結果を得れませんでした。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/02/09 12:52
2021/02/09 13:10
退会済みユーザー
2021/02/10 00:05