没细看代码,看看是不是这个意思? Sub 分类汇总() '将数据源[核算码日报]的F列余额按网点导入到[网点明细]的[D:H]列 Dim Myr3%, Myr2%, arr, i%, col%, r1, r2 Dim m% 't = Timer Application.ScreenUpdating = False arr = Sheet5.Range("b2:f" & Sheet5.[b65536].End(xlUp).Row) '设定数据源[核算码日报]的取数区域 Sheet6.Activate '网点明细 Myr3 = [a2].CurrentRegion.Rows.Count '结果表的a列第2行单元格标题所在的行的最大行数 Range("d3:h" & Myr3) = "" '清空数据导入区 For i = 1 To UBound(arr) Set r1 = Rows(1).Find(arr(i, 1)) 'r1未设变量,将[网点明细]的第1行(辖内机构号)与arr的第1列即[核算码日报]的B列进行对比 col = r1.Column Set r2 = Columns(1).Find(arr(i, 2), , , xlWhole) 'r2未设变量,将[网点明细]的第1列(核算码)与arr的第2列即[核算码日报]的C列进行对比 If Not r2 Is Nothing Then m = r2.Row '***************************************************** '方法1,由于Sheet5还存在借方余额在E列,如核算码6225,而我们多数是将F列的余额导出,如用方法1,将在执行按纽[分类汇总]前依靠用户手工将Sheet5中E列的余额调整到F列,并自行添加负号 'Cells(m, col) = arr(i, 5) ' '方法2,解决了方法1的不足 'If arr(i, 14) = 0 And arr(i, 13) > 0 Then If arr(i, 5) = 0 And arr(i, 4) > 0 Then Cells(m, col) = -arr(i, 4) Else Cells(m, col) = arr(i, 5) End If End If '***************************************************** Next i Application.ScreenUpdating = True 'MsgBox Timer - t End Sub
|