オートフィルタで抽出された内容(可視セル)のみでfor if next 文の処理を行いたいものの、
上手くいかないためご質問させていただきました。
【使用データ】
1.BOOK0(マクロ)
2.BOOK1(転記先データ)
3.BOOK2(検索データ)
【処理内容】
①BOOK2を条件下でオートフィルタの適用
条件内容:日付(yyyy/mm/ddまで)と空白
②BOOK2オートフィルタ適用中のまま、BOOK1 C列とBOOK2C列で一致するものをif文で判別
③②でヒットした場合、BOOK2 E列に入力されている日付をBOOK1 E列に転記
という流れにしたいと考えております。
現状動くのは動くのですが、オートフィルタの条件(日付と空白)が反映されないまま転記されています。
ちなみにオートフィルタの条件は問題ないことと正常であることは確認できております。
.SpecialCells(xlCellTypeVisible)を用いて可視セルのみを対象となるように試してみたのですが、
差込どころが悪いのかうまく作動しませんでした。
以下対象となるコード(一部)を記載いたしますので、
有識者のみなさまのお力をお借りさせて頂きたく存じます。
※VBA 勉強中のためコードに不備点や見づらい点もあるかと思いますがご了承頂けますと幸いです。
'BOOK1C列とBOOK2C列 一致→D列にBOOK2B列に入力されている日付をBOOK1B列へ転記 Dim i As Long Dim j As Long 'フィルター設定 wb2.Sheets("sheet1").Range("A1").AutoFilter Field:=5, Criteria1:="<=" & date(日付) wb2.Sheets("sheeet1").Range("A1").AutoFilter Field:=14, Criteria1:="" For j = 3 To wb2.Sheets("sheet1").Cells(Rows.Count, "C").End(xlUp).Row For i = 4 To wb1.Sheets("sheet1").Cells(Rows.Count, "C").End(xlUp).Row If wb1.Sheets("sheet1").Cells(i, "C") = wb2.Sheets("sheet1").Cells(j, "C") Then wb1.Sheets("sheet1").Cells(i, "E") = Format(wb2.Sheets("sheet1").Cells(j, "E"), "yyyy/mm/dd") End If Next i Next j wb2.Sheets("sheet1").Range("A1").AutoFilter End Sub
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/11 06:30
2021/03/11 06:38
2021/03/11 14:32
2021/03/11 15:11
2021/03/13 14:31 編集
2021/03/14 09:21