Sub ffg() x = ThisWorkbook.Path & "\" s = Dir(x & "*.xls") e = Range("b65536").End(xlUp).Row Range("e3:e" & e) = Range("c3:c" & e).Value 'Range("e3:e" & e).ClearContents'这里也可省略,直接到上句 Do While s <> "" If Mid(s, 6, 1) <= Mid(ThisWorkbook.Name, 6, 1) And _ Mid(s, 1, 4) = Mid(ThisWorkbook.Name, 1, 4) _ And s <> ThisWorkbook.Name Then Workbooks.Open (x & s) Workbooks(s).Sheets(1).Activate For i = 3 To e cz = Sheet1.Cells(i, 2) Set dd = ActiveSheet.Cells Set sw = dd.Find(cz) If Not sw Is Nothing Then er = sw.Row q = Application.Sheets(1).Cells(er, 3) End If ThisWorkbook.Sheets(1).Cells(i, "e") = ThisWorkbook.Sheets(1) _ .Cells(i, "e") + q '+ ThisWorkbook.Sheets(1).Cells(i, "c")这里多加了N-1个本月数 ro = ro + 1 Next Workbooks(s).Close False End If s = Dir Loop 'If ro = 0 Then'每仔细看,估计这里是1月份的时候直接加本月数,可省略 'For i = 3 To e 'ThisWorkbook.Sheets(1).Cells(i, "e") = ThisWorkbook.Sheets(1) _ ' .Cells(i, "e") + q + ThisWorkbook.Sheets(1).Cells(i, "c") ' Next 'End If End Sub PS:到你的基础上做了一点修改,也不知道对不对。另:这个代码有点长,用字典不知道是否会好些 |