简单复制-去重-做透视表
Sub 宏3()
Application.ScreenUpdating = False '关闭屏幕更新,看不到宏的执行过程,但提高宏运行速度
Application.EnableEvents = False '关闭事件,防止触发事情,提高运行速度
t = Timer
'复制-去重
'Worksheets("处理结果").Range("A:C").ClearContents
Worksheets("派单明细报表").Select
Range("E:E,O:O,U:U").Select
Selection.Copy
Worksheets("处理结果").Select
Columns("A:C").Select
ActiveSheet.Paste
Application.CutCopyMode = False
irow = Range("a1").CurrentRegion.Rows.Count
ActiveSheet.Range("A1:C" & irow).RemoveDuplicates Columns:=Array(1, 2, 3), _
Header:=xlYes
'透视表
Worksheets("处理结果").Range("J:N").ClearContents
'irow = Range("a1").CurrentRegion.Rows.Count '选择最大行
'aa = Range("A1:C" & irow).Select
'R1C1:R1048576C3
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"处理结果!R1C1:R1048576C3", Version:=6).CreatePivotTable TableDestination:= _
"处理结果!R2C10", TableName:="数据透视表2", DefaultVersion:=6
Sheets("处理结果").Select
Cells(2, 10).Select
ActiveSheet.PivotTables("数据透视表2").RepeatAllLabels xlRepeatLabels
ActiveWorkbook.ShowPivotTableFieldList = True
With ActiveSheet.PivotTables("数据透视表2").PivotFields("发货区域")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("数据透视表2").PivotFields("派单类型")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("数据透视表2").AddDataField ActiveSheet.PivotTables("数据透视表2" _
).PivotFields("派单单号"), "计数项:派单单号", xlCount
ActiveWorkbook.ShowPivotTableFieldList = False
Worksheets("处理结果").Range("A:C").ClearContents
MsgBox Timer - t & "秒完成"
Application.ScreenUpdating = True '结束屏幕更新
End Sub
VBA 字典多表匹配
----------------------------------------------------------------------------------------------------------------------------------------
'三表之中sheet1、sheet2、sheet3 匹配(把sheet2合同号、sheet3合同号匹配到sheet1里面去)
Sub nihao1()
Windows("信贷数据匹配.xlsm").Activate
Worksheets("Sheet1").Select
Worksheets("Sheet2").Select
Sheets("Sheet3").Select
Dim i&, Myr&, arr, j&
Dim d, k, t, m&, Arr1
Set d = CreateObject("Scripting.Dictionary") '定义字典'
Set d2 = CreateObject("Scripting.Dictionary") '定义字典'
'Set d2 = CreateObject("Scripting.Dictionary") '定义字典'
'Set d3 = CreateObject("Scripting.Dictionary") '定义字典'
'Set d4 = CreateObject("Scripting.Dictionary") '定义字典'
'Set d5 = CreateObject("Scripting.Dictionary") '定义字典'
'y = d(Arr(Range("c1:c200"))) + 1
Worksheets("Sheet3").Select '开始运行字典'
With Sheets("Sheet3")
X = Range("b1").CurrentRegion.Rows.Count '设置最大行'
For i = 2 To X
d(.Cells(i, 2).Value) = .Cells(i, 2).Value
'd2(.Cells(i, 2).Value) = .Cells(i, 2).Value
' d2(.Cells(i, 2).Value) = .Cells(i, 7).Value
' d3(.Cells(i, 2).Value) = .Cells(i, 8).Value
' d4(.Cells(i, 2).Value) = .Cells(i, 9).Value
' d5(.Cells(i, 2).Value) = .Cells(i, 10).Value
'd1(.Cells(i, 1).Value) = .Cells(i, 3).Value
Next i
End With
Worksheets("Sheet2").Select '开始运行字典'
With Sheets("Sheet2")
X1 = Range("b1").CurrentRegion.Rows.Count '设置最大行'
For i1 = 2 To X1
d2(.Cells(i1, 2).Value) = .Cells(i1, 2).Value
'd1(.Cells(i, 2).Value) = .Cells(i, 2).Value
' d2(.Cells(i, 2).Value) = .Cells(i, 7).Value
' d3(.Cells(i, 2).Value) = .Cells(i, 8).Value
' d4(.Cells(i, 2).Value) = .Cells(i, 9).Value
' d5(.Cells(i, 2).Value) = .Cells(i, 10).Value
'd1(.Cells(i, 1).Value) = .Cells(i, 3).Value
Next i1
End With
Sheets("Sheet1").Select
With Sheets("Sheet1")
y = Range("b1").CurrentRegion.Rows.Count '设置最大行'
For Z = 2 To y
.Cells(Z, 4).Value = d(.Cells(Z, 1).Value)
.Cells(Z, 3).Value = d2(.Cells(Z, 1).Value)
' .Cells(Z, 23).Value = d3(.Cells(Z, 2).Value)
' .Cells(Z, 24).Value = d4(.Cells(Z, 2).Value)
' .Cells(Z, 25).Value = d5(.Cells(Z, 2).Value)
'.Cells(Z, 21).Value = d1(.Cells(Z, 1).Value)
Next Z
End With
End Sub
(1.1)VBA批量打开桌面文件夹里面多个工作簿 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sub test()
Dim mypath, myfile '定义
mypath = "C:\Users\xn084037\Desktop" & "\nihao" '指定路径nihao文件夹名
myfile = Dir(mypath & "*.xlsx") '指定文件家里面的工作簿(文件夹下面有多个工作簿)
Application.ScreenUpdating = False '关闭屏幕更新
Application.DisplayAlerts = False '关闭提示框
Do While myfile <> ""
If myfile <> ThisWorkbook.Name Then
Workbooks.Open mypath & myfile
'With ActiveWorkbook '批量操作的语句
'.Sheets(1).Range("A1") = "金额"
'.Sheets(2).Delete
'End With
'ActiveWorkbook.Save
'ActiveWorkbook.Close
End If
myfile = Dir
Loop
Application.DisplayAlerts = True
Application.ScreenUpdating = True
(1.2)VBA批量打开桌面文件夹里面多个工作簿并且把数据复制到汇总表
Sub test1()
t = Timer
p = "C:\Users\xn084037\Desktop" & "\同一个文件夹不同工作簿分案清单合并VBA" '指定文件路径
f = Dir(p & "*.xlsx") '指定文件夹旗下多个工作簿
Application.ScreenUpdating = False '关闭屏幕显示
ReDim brr(1 To 100000, 1 To 26) '定义汇总表数组范围
Do While f <> ""
If f <> ThisWorkbook.Name Then
n = n + 1 '文件夹里面工作簿个数
Set sh = GetObject(p & f).Sheets(1) '打开这些文件夹旗下所有工作簿的一个sheets
Arr = sh.[a1].CurrentRegion '定义Arr数据范围为每个sheets的a1单元格不为空区域
Workbooks(f).Close False
For i = 2 To UBound(Arr) '子表中行的取值范围
m = m + 1 '汇总表中第一行为表头,第一次循环时,汇总表中为2行才是填充数据,所以m=m+1就是汇总表中的步长,
'brr(m, 1) = Arr(i, 4)
For j = 1 To 26 '列的取值范围
brr(m, j) = Arr(i, j) 'brr(m, j)是汇总表数组,Arr(i, j)是子表数组
Next
Next
End If
f = Dir
Loop
Set sh = Nothing '释放内存
If m > 0 Then
[a1].CurrentRegion.Offset(1).ClearContents '可以在保留第一行表头的情况下,把其他行的数据都彻底删除。
[a2].Resize(m, 26) = brr
End If
Application.ScreenUpdating = True
MsgBox "合并了:" & n & "个文件;共有:" & m & "行数据。" & "用时:" & Format(Timer - t, "0.00") & "秒" '显示
End Sub
(1)执行打开已隐藏辅助表功能
Sub chuxian() '执行打开已隐藏辅助表功能
Worksheets("总回退").Visible = True
Worksheets("总回退辅表").Visible = True
Worksheets("总回收率").Visible = True
Worksheets("总回收率辅表").Visible = True
Worksheets("跑出的数据").Visible = True
Worksheets("批量添加").Visible = True
Worksheets("M3回收率").Visible = True
Worksheets("M3").Visible = True
Worksheets("M2_1回收率").Visible = True
Worksheets("M2-1").Visible = True
Worksheets("M2_2回收率").Visible = True
Worksheets("M2-2").Visible = True
Worksheets("异常处理").Visible = True
End Sub
(2)类似于excel中sumifs函数
Sub match_caculate() '本代码主要功能是类似于excel中sumifs函数 通过工号匹配可算回款数据,生成第八列员工实际回款、第9列 回收率=员工实际回款/逾期金额、'第10列 排名
Sheets("总回收率").Select '选择对象总回收率这个sheet(总回收率的数据先从数据库跑出来)
a = Range("a1").CurrentRegion.Rows.Count '选择最大行
For i = 2 To a ' 循环的写法
'类似于excel中sumifs函数 通过工号匹配可算回款数据
Cells(i, 8) = WorksheetFunction.SumIfs(Sheets("可算回退").Range("J:J"), Sheets("可算回退").Range("B:B"), Sheets("总回收率").Range("B" & i)) '第八列员工实际回款
Cells(i, 9) = Cells(i, 8) / Cells(i, 7) '第9列 回收率=员工实际回款/逾期金额
Cells(i, 10) = i - 1 '第10列 排名
Next i
End Sub
(3)填充功能
Sub add_() '填充功能
Worksheets("可算回退辅表").Select '选择对象批可算回退辅表这个sheet
Range("A1") = "合同&工号" '可算回退辅表的A1单元格=合同&工号
a = Range("B1").CurrentRegion.Rows.Count '取最大行
Range("A2").FormulaR1C1 = "=RC[1]&RC[2]" 'B2列&C2列(合同&工号)
Range("A2").AutoFill Destination:=Range("A2:A" & a), Type:=xlFillDefault '填充
Worksheets("批量处理").Select '选择对象批量处理这个sheet
b = Range("B1").CurrentRegion.Rows.Count '取最大行
Range("C2").AutoFill Destination:=Range("C2:C" & b), Type:=xlFillDefault '填充
Range("D2").AutoFill Destination:=Range("D2:D" & b), Type:=xlFillDefault '填充
Range("E2").AutoFill Destination:=Range("E2:E" & b), Type:=xlFillDefault '填充
Range("F2").AutoFill Destination:=Range("F2:F" & b), Type:=xlFillDefault '填充
Range("G2").AutoFill Destination:=Range("G2:G" & b), Type:=xlFillDefault '填充
Range("H2").AutoFill Destination:=Range("H2:H" & b), Type:=xlFillDefault '填充
Range("J2").AutoFill Destination:=Range("J2:J" & b), Type:=xlFillDefault '填充
Range("K2").AutoFill Destination:=Range("K2:K" & b), Type:=xlFillDefault '填充
Range("M2").AutoFill Destination:=Range("M2:M" & b), Type:=xlFillDefault '填充
Range("N2").AutoFill Destination:=Range("N2:N" & b), Type:=xlFillDefault '填充
End Sub
(4)主要执行xindai 表清空、筛选、选择最大行 、复制、粘贴、排序、排名、循环、日期格式、调整百分比、隐藏各个辅助表功能
Sub Seperate() '主要执行xindai 表清空、筛选、选择最大行 、复制、粘贴、排序、排名、循环、日期格式、调整百分比、隐藏各个辅助表功能
' ps = "是"
'
' msg = Application.InputBox(prompt:="请问是否处理了异常数据调整表的异常及回收率表的pick_me", Type:=1 + 2)
' If msg <> ps Then MsgBox "请先处理异常数据调整表的异常": Exit Sub
T = Timer '定义时间
'Call toushibiao
' If Worksheets("总回收率").Range("N4").Value = False Then
' MsgBox ("数据存在异常,请核实"): Exit Sub
' ElseIf Worksheets("总回收率").Range("N4").Value = True Then
' MsgBox ("数据无误,继续执行")
' End If
' msg = Application.InputBox(prompt:="是否需要剔除委案", Type:=1 + 2)
' If msg = ps Then
' Call 剔除委案
' End If
'清空区域
Worksheets("M1回收率").Columns("A:L").ClearContents '清空代码
Worksheets("M2回收率").Columns("A:L").ClearContents '清空代码
Worksheets("M1回退").UsedRange.ClearContents '清空代码
Worksheets("M2回退").UsedRange.ClearContents '清空代码
Worksheets("可算回退辅表").Columns("B:O").ClearContents '清空代码
'Sheets("可算回退").UsedRange.EntireColumn.AutoFit
'复制数据至辅表
Worksheets("可算回退").Select ' 选择对象可算回退这个sheet
Columns("A:J").Copy '复制可算回退A-J列
Worksheets("可算回退辅表").Select ' 选择对象可算回退辅表这个sheet
Worksheets("可算回退辅表").Range("B1").Select '选择对象可算回退辅表这个sheet的B1
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False '执行粘贴代码
'Columns("C:C").Insert Shift:=xlToRight
Columns("F:F").Select '选择对象F列
Selection.NumberFormatLocal = "yyyy/mm/dd" '把F列的日期格式设置为年月日(yyyy/mm/dd)
Columns("J:J").Select '选择对象J列
Selection.NumberFormatLocal = "yyyy/mm/dd" '把J列的日期格式设置为年月日(yyyy/mm/dd)
'复制数据至各子表
'表1
Worksheets("可算回退辅表").Select ' 选择对象可算回退辅表这个sheet
a = Range("A1").CurrentRegion.Rows.Count '选择最大行
Set edg = Worksheets("可算回退辅表").UsedRange
ActiveSheet.Range("B1:O1").AutoFilter field:=4, Criteria1:="M1" '筛选第四列=M1数据
edg.Copy '复制
Worksheets("M1回退").Select '选择对象M1回退这个sheet
Worksheets("M1回退").Range("A1").Select '选择对象M1回退这个sheet的A1列
ActiveSheet.Paste '执行粘贴
Application.CutCopyMode = False
'表2
Worksheets("可算回退辅表").Select ' 选择对象可算回退辅表这个sheet
ActiveSheet.Range("B1:O1").AutoFilter field:=4, Criteria1:="M2" '筛选第四列=M2数据
edg.Copy '执行复制
Worksheets("M2回退").Select '选择对象M2回退这个sheet
Worksheets("M2回退").Range("A1").Select '选择对象M2回退这个sheet的A1列
ActiveSheet.Paste '执行粘贴
Application.CutCopyMode = False
Worksheets("可算回退辅表").Select ' 选择对象可算回退辅表这个sheet
Worksheets("可算回退辅表").Range("A1:M1").AutoFilter
'总回收率调整格式
Worksheets("总回收率").Select '选择对象总回收率这个sheet
x = Range("A1").CurrentRegion.Rows.Count '选择最大行
Dim rng As Range '定义 rng As Range
Set rng = Range("A1:J" & x) '选定范围
rng.Sort key1:="员工实际回款", order1:=xlDescending, Header:=xlYes '对员工实际回款这列进行降序排序
For i = 2 To x
Range("J" & i) = i - 1 '对J列排名
Next
Range("H2:H" & x).Select '选择 H2所在列
Selection.NumberFormatLocal = "G/通用格式" '调整格式
Range("I2:I" & x).Select '选择I2所在列
Selection.NumberFormatLocal = "0.00%" '调整百分比为2位小数点
'总回收率的数据拆分至各子表
'表1
Worksheets("总回收率").Select '选择对象总回收率这个sheet
Range("A1:J" & x).AutoFilter field:=4, Criteria1:="M1" '筛选第四列=M1数据
rng.Copy '执行复制
Worksheets("M1回收率").Select '选择对象M1回收率这个sheet
Worksheets("M1回收率").Range("A1").Select '选择对象M1回收率这个sheet的A1列
ActiveSheet.Paste '执行粘贴代码
Y = Range("A1").CurrentRegion.Rows.Count '选择最大行
For i = 2 To Y '循环
Range("J" & i) = i - 1 '对J列排名
Next
Application.CutCopyMode = False
'表2
Worksheets("总回收率").Select '选择对象总回收率这个sheet
Range("A1:J" & x).AutoFilter field:=4, Criteria1:="M2" '筛选第四列=M2数据
rng.Copy '执行复制代码
Worksheets("M2回收率").Select '选择对象M2回收率这个sheet
Worksheets("M2回收率").Range("A1").Select '选择对象M2回收率这个sheet的A1列
ActiveSheet.Paste '执行粘贴
Y = Range("A1").CurrentRegion.Rows.Count '选择最大行
For i = 2 To Y '循环
Range("K" & i) = i - 1 'K列排名
Next
Application.CutCopyMode = False
Worksheets("总回收率").Range("a1:j1").AutoFilter
MsgBox Timer - T & "秒完成嘿嘿" '程序执行后提示完成时间
Set rng = Nothing '释放 rng
Set edg = Nothing '释放 edg
'以下代码是隐藏各个辅助表
Worksheets("可算回退").Visible = False
Worksheets("可算回退辅表").Visible = False
Worksheets("总回收率").Visible = False
Worksheets("M2回退").Visible = False
Worksheets("M2回收率").Visible = False
Worksheets("跑出后的数据").Visible = False
Worksheets("批量处理").Visible = False
End Sub
Sub chuxian() '执行打开已隐藏辅助表功能
Worksheets("总回退").Visible = True
Worksheets("总回退辅表").Visible = True
Worksheets("总回收率").Visible = True
Worksheets("总回收率辅表").Visible = True
Worksheets("跑出的数据").Visible = True
Worksheets("批量添加").Visible = True
Worksheets("M3回收率").Visible = True
Worksheets("M3").Visible = True
Worksheets("M2_1回收率").Visible = True
Worksheets("M2-1").Visible = True
Worksheets("M2_2回收率").Visible = True
Worksheets("M2-2").Visible = True
Worksheets("异常处理").Visible = True
End Sub
Sub match_caculate() '本代码主要功能是类似于excel中sumifs函数 通过工号匹配可算回款数据,生成第八列员工实际回款、第9列 回收率=员工实际回款/逾期金额、'第10列 排名
Sheets("总回收率").Select '选择对象总回收率这个sheet(总回收率的数据先从数据库跑出来)
a = Range("a1").CurrentRegion.Rows.Count '选择最大行
For i = 2 To a ' 循环的写法
'类似于excel中sumifs函数 通过工号匹配可算回款数据
Cells(i, 8) = WorksheetFunction.SumIfs(Sheets("可算回退").Range("J:J"), Sheets("可算回退").Range("B:B"), Sheets("总回收率").Range("B" & i)) '第八列员工实际回款
Cells(i, 9) = Cells(i, 8) / Cells(i, 7) '第9列 回收率=员工实际回款/逾期金额
Cells(i, 10) = i - 1 '第10列 排名
Next i
End Sub
Sub add_() '填充功能
Worksheets("可算回退辅表").Select '选择对象批可算回退辅表这个sheet
Range("A1") = "合同&工号" '可算回退辅表的A1单元格=合同&工号
a = Range("B1").CurrentRegion.Rows.Count '取最大行
Range("A2").FormulaR1C1 = "=RC[1]&RC[2]" 'B2列&C2列(合同&工号)
Range("A2").AutoFill Destination:=Range("A2:A" & a), Type:=xlFillDefault '填充
Worksheets("批量处理").Select '选择对象批量处理这个sheet
b = Range("B1").CurrentRegion.Rows.Count '取最大行
Range("C2").AutoFill Destination:=Range("C2:C" & b), Type:=xlFillDefault '填充
Range("D2").AutoFill Destination:=Range("D2:D" & b), Type:=xlFillDefault '填充
Range("E2").AutoFill Destination:=Range("E2:E" & b), Type:=xlFillDefault '填充
Range("F2").AutoFill Destination:=Range("F2:F" & b), Type:=xlFillDefault '填充
Range("G2").AutoFill Destination:=Range("G2:G" & b), Type:=xlFillDefault '填充
Range("H2").AutoFill Destination:=Range("H2:H" & b), Type:=xlFillDefault '填充
Range("J2").AutoFill Destination:=Range("J2:J" & b), Type:=xlFillDefault '填充
Range("K2").AutoFill Destination:=Range("K2:K" & b), Type:=xlFillDefault '填充
Range("M2").AutoFill Destination:=Range("M2:M" & b), Type:=xlFillDefault '填充
Range("N2").AutoFill Destination:=Range("N2:N" & b), Type:=xlFillDefault '填充
End Sub
Sub Seperate() '主要执行xindai 表清空、筛选、选择最大行 、复制、粘贴、排序、排名、循环、日期格式、调整百分比、隐藏各个辅助表功能
' ps = "是"
'
' msg = Application.InputBox(prompt:="请问是否处理了异常数据调整表的异常及回收率表的pick_me", Type:=1 + 2)
' If msg <> ps Then MsgBox "请先处理异常数据调整表的异常": Exit Sub
T = Timer '定义时间
'Call toushibiao
' If Worksheets("总回收率").Range("N4").Value = False Then
' MsgBox ("数据存在异常,请核实"): Exit Sub
' ElseIf Worksheets("总回收率").Range("N4").Value = True Then
' MsgBox ("数据无误,继续执行")
' End If
' msg = Application.InputBox(prompt:="是否需要剔除委案", Type:=1 + 2)
' If msg = ps Then
' Call 剔除委案
' End If
'清空区域
Worksheets("M1回收率").Columns("A:L").ClearContents '清空代码
Worksheets("M2回收率").Columns("A:L").ClearContents '清空代码
Worksheets("M1回退").UsedRange.ClearContents '清空代码
Worksheets("M2回退").UsedRange.ClearContents '清空代码
Worksheets("可算回退辅表").Columns("B:O").ClearContents '清空代码
'Sheets("可算回退").UsedRange.EntireColumn.AutoFit
'复制数据至辅表
Worksheets("可算回退").Select ' 选择对象可算回退这个sheet
Columns("A:J").Copy '复制可算回退A-J列
Worksheets("可算回退辅表").Select ' 选择对象可算回退辅表这个sheet
Worksheets("可算回退辅表").Range("B1").Select '选择对象可算回退辅表这个sheet的B1
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False '执行粘贴代码
'Columns("C:C").Insert Shift:=xlToRight
Columns("F:F").Select '选择对象F列
Selection.NumberFormatLocal = "yyyy/mm/dd" '把F列的日期格式设置为年月日(yyyy/mm/dd)
Columns("J:J").Select '选择对象J列
Selection.NumberFormatLocal = "yyyy/mm/dd" '把J列的日期格式设置为年月日(yyyy/mm/dd)
'复制数据至各子表
'表1
Worksheets("可算回退辅表").Select ' 选择对象可算回退辅表这个sheet
a = Range("A1").CurrentRegion.Rows.Count '选择最大行
Set edg = Worksheets("可算回退辅表").UsedRange
ActiveSheet.Range("B1:O1").AutoFilter field:=4, Criteria1:="M1" '筛选第四列=M1数据
edg.Copy '复制
Worksheets("M1回退").Select '选择对象M1回退这个sheet
Worksheets("M1回退").Range("A1").Select '选择对象M1回退这个sheet的A1列
ActiveSheet.Paste '执行粘贴
Application.CutCopyMode = False
'表2
Worksheets("可算回退辅表").Select ' 选择对象可算回退辅表这个sheet
ActiveSheet.Range("B1:O1").AutoFilter field:=4, Criteria1:="M2" '筛选第四列=M2数据
edg.Copy '执行复制
Worksheets("M2回退").Select '选择对象M2回退这个sheet
Worksheets("M2回退").Range("A1").Select '选择对象M2回退这个sheet的A1列
ActiveSheet.Paste '执行粘贴
Application.CutCopyMode = False
Worksheets("可算回退辅表").Select ' 选择对象可算回退辅表这个sheet
Worksheets("可算回退辅表").Range("A1:M1").AutoFilter
'总回收率调整格式
Worksheets("总回收率").Select '选择对象总回收率这个sheet
x = Range("A1").CurrentRegion.Rows.Count '选择最大行
Dim rng As Range '定义 rng As Range
Set rng = Range("A1:J" & x) '选定范围
rng.Sort key1:="员工实际回款", order1:=xlDescending, Header:=xlYes '对员工实际回款这列进行降序排序
For i = 2 To x
Range("J" & i) = i - 1 '对J列排名
Next
Range("H2:H" & x).Select '选择 H2所在列
Selection.NumberFormatLocal = "G/通用格式" '调整格式
Range("I2:I" & x).Select '选择I2所在列
Selection.NumberFormatLocal = "0.00%" '调整百分比为2位小数点
'总回收率的数据拆分至各子表
'表1
Worksheets("总回收率").Select '选择对象总回收率这个sheet
Range("A1:J" & x).AutoFilter field:=4, Criteria1:="M1" '筛选第四列=M1数据
rng.Copy '执行复制
Worksheets("M1回收率").Select '选择对象M1回收率这个sheet
Worksheets("M1回收率").Range("A1").Select '选择对象M1回收率这个sheet的A1列
ActiveSheet.Paste '执行粘贴代码
Y = Range("A1").CurrentRegion.Rows.Count '选择最大行
For i = 2 To Y '循环
Range("J" & i) = i - 1 '对J列排名
Next
Application.CutCopyMode = False
'表2
Worksheets("总回收率").Select '选择对象总回收率这个sheet
Range("A1:J" & x).AutoFilter field:=4, Criteria1:="M2" '筛选第四列=M2数据
rng.Copy '执行复制代码
Worksheets("M2回收率").Select '选择对象M2回收率这个sheet
Worksheets("M2回收率").Range("A1").Select '选择对象M2回收率这个sheet的A1列
ActiveSheet.Paste '执行粘贴
Y = Range("A1").CurrentRegion.Rows.Count '选择最大行
For i = 2 To Y '循环
Range("K" & i) = i - 1 'K列排名
Next
Application.CutCopyMode = False
Worksheets("总回收率").Range("a1:j1").AutoFilter
MsgBox Timer - T & "秒完成嘿嘿" '程序执行后提示完成时间
Set rng = Nothing '释放 rng
Set edg = Nothing '释放 edg
'以下代码是隐藏各个辅助表
Worksheets("可算回退").Visible = False
Worksheets("可算回退辅表").Visible = False
Worksheets("总回收率").Visible = False
Worksheets("M2回退").Visible = False
Worksheets("M2回收率").Visible = False
Worksheets("跑出后的数据").Visible = False
Worksheets("批量处理").Visible = False
End Sub
(5)值化排序 保存表格、并另存到指定位置
Sub 值化排序()'值化排序 保存表格、并另存到指定位置 功能(xiaolei)
t = Timer '对所有表格进行值化
Dim sht As Worksheet '定义 sht As Worksheet
For Each sht In Worksheets '循环体
With sht
.UsedRange.Copy '复制
.UsedRange.PasteSpecial xlPasteValues '粘贴
End With
Application.CutCopyMode = False '清空剪贴板 在复制或者剪切了大量内容后关闭文件,如果不写上这句代码,会出现提示窗口:是否保存手复制的内容到剪贴板,以便下次使用。这时文件不能自动关闭,必须手动关闭提示框才关闭文件。
Next
'Worksheets("反馈汇总").Visible = False '隐藏表格"反馈汇总明细"
Worksheets("实际回款明细表(刷)").Visible = False '隐藏表格
Worksheets("分案明细").Visible = False
Worksheets("回款明细汇总").Visible = False
Range("C3:F5").Select '选择对象数据汇总这个sheet 的C3:F5列所在区域,对区域"C3:F5"进行排序
'benyuechujiezhidaozuotiangechanpinhuishouqingkuang
ActiveWorkbook.Worksheets("数据汇总").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("数据汇总").Sort.SortFields.Add Key:=Range("F4:F5"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal '清空排序集合清空当前内存中Sort命令已经记录的数据,并做初始化设置
With ActiveWorkbook.Worksheets("数据汇总").Sort
.SetRange Range("C3:F5")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With '对F4:F6进行数值降序排序
'benyuexindaiM2cuishouzhuanyuanhuishouqingkuang
Range("H3:L9").Select '选择对象数据汇总这个sheet 的H3:L9列所在区域
ActiveWorkbook.Worksheets("数据汇总").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("数据汇总").Sort.SortFields.Add Key:=Range("L4:L9"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal '清空排序集合清空当前内存中Sort命令已经记录的数据,并做初始化设置
With ActiveWorkbook.Worksheets("数据汇总").Sort
.SetRange Range("H3:L9")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With '对F3:F9进行数值降序排序
'benyuefenqiM2cuishouzhuanyuanhuishouqingkuang
Range("N3:R6").Select '选择对象数据汇总这个sheet 的N3:R6列所在区域
ActiveWorkbook.Worksheets("数据汇总").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("数据汇总").Sort.SortFields.Add Key:=Range("R4:R6"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal '清空排序集合清空当前内存中Sort命令已经记录的数据,并做初始化设置
With ActiveWorkbook.Worksheets("数据汇总").Sort
.SetRange Range("N3:R6")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With '对N3:R6进行数值降序排序
'ActiveWindow.ScrollColumn=4表示活动窗口滚动到那一列
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
ActiveWorkbook.Worksheets("数据汇总").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("数据汇总").Sort.SortFields.Add Key:=Range("F4:F5"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("数据汇总").Sort
.SetRange Range("C3:F5")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("H3:L9").Select
ActiveWorkbook.Worksheets("数据汇总").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("数据汇总").Sort.SortFields.Add Key:=Range("L4:L9"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("数据汇总").Sort
.SetRange Range("H3:L9")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("N3:R6").Select
ActiveWorkbook.Worksheets("数据汇总").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("数据汇总").Sort.SortFields.Add Key:=Range("R4:R6"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("数据汇总").Sort
.SetRange Range("N3:R6")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
MsgBox Timer - t & "秒完成" '显示代码完成所耗的时间
End Sub
Sub 保存表格并另存到指定位置()
ThisWorkbook.Save '保存当前工作簿
tn = ThisWorkbook.Name '当前工作簿名称
tp = ThisWorkbook.Path '当前工作簿位置
tx = "E:***\10月信贷及分期M2(业绩报表)" '另存为工作簿的路径
Sheets("数据汇总").Select '选定工作表
datenum = Application.WorksheetFunction.Text(Range("A2"), "yyyymmdd") '日期(文件名后缀)
Application.DisplayAlerts = False
'ThisWorkbook.SaveAs Filename:=tp & "" & "8月信贷M2及M2+业绩报表" & "(" & datenum & ")" & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False '在当前工作簿位置保存并命名
ThisWorkbook.SaveAs Filename:=tx & "" & "10月信贷及分期M2业绩报表" & "(" & datenum & ")" & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False '在指定位置保存
Application.DisplayAlerts = True
End Sub
Sub 合并()
值化排序
保存表格并另存到指定位置
End Sub
(6)复制、分类回款明细
Sub 复制() '主要功能是把实际回款明细表(刷)数据复制粘贴到回款明细汇总
Worksheets("回款明细汇总").Range("A:C").ClearContents '清空回款明细汇总这个sheet 的A-C列数据
'信贷回款数据B:D列
Worksheets("实际回款明细表(刷)").Select '选择对象实际回款明细表(刷)
Columns("B:D").Copy '复制B到D列'
Worksheets("回款明细汇总").Select '选择对象回款明细汇总
Range("a1").Select '从a1单元格开始粘贴
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False '不带格式粘贴(粘贴值)
Application.CutCopyMode = False ' 释放剪贴板内容
'rowmax = Worksheets("回款明细汇总").Range("A1").CurrentRegion.Rows.Count '选择最大行
'分期回款数据G2:I2列
rowmax = Worksheets("回款明细汇总").Range("A65536").End(xlUp).Row '选择有数据最大行
Worksheets("实际回款明细表(刷)").Select '选择对象实际回款明细表(刷)
Range("G2:I2").Select
Range(Selection, Selection.End(xlDown)).Select '复制g-i列有数据区域
Selection.Copy
'继续粘贴分期回款数据(在信贷回款数据基础上继续粘贴)
Worksheets("回款明细汇总").Select
Range("A" & (rowmax + 1)).Select '从A列有数据下一行开始粘
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
'复制粘贴字段包括催收员工号 催收员 组长 经理 type 分案日期 还款日期是否在委案日期内
irow = Worksheets("回款明细汇总").Range("A" & Cells.Rows.Count).End(xlUp).Row '有数据的最大行数,包括中间有空值的'
Worksheets("回款明细汇总").Range("D4:J4").Select '选择范围(带公式的区域)
Selection.AutoFill Destination:=Worksheets("回款明细汇总").Range("D4:J" & irow), Type:=xlFillDefault '向下填充公式至有数据的最大行
End Sub
Sub 分类回款明细() '主要功能是拆分信贷M2及分期M2对应的专员催收名单
'信贷M2
irow = Worksheets("回款明细汇总").Range("a1").CurrentRegion.Rows.Count '最大行行数
Worksheets("回款明细汇总").Range("1:" & irow).AutoFilter field:=10, Criteria1:="是" '筛选第10列,并且选择条件=是
Worksheets("回款明细汇总").Range("1:" & irow).AutoFilter field:=8, Criteria1:="信贷M2" '筛选第8列,并且选择条件=信贷M2
Worksheets("回款明细汇总").Range("A:G").Copy '执行复制
Sheets("分类回款明细【不含离职人员及手工】").Select '选择对象分类回款明细【不含离职人员及手工】
Range("B2").Select '选项对象B2列
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False '非格式化粘贴(仅仅粘贴数字)
Worksheets("回款明细汇总").Rows("1:1").AutoFilter '关闭筛选'
Application.CutCopyMode = False '退出粘贴
'分期M2
Worksheets("回款明细汇总").Range("1:" & irow).AutoFilter field:=10, Criteria1:="是" '筛选第10列,并且选择条件=是
Worksheets("回款明细汇总").Range("1:" & irow).AutoFilter field:=8, Criteria1:="分期M2" '筛选第8列,并且选择条件=分期M2
Worksheets("回款明细汇总").Range("A:G").Copy '执行复制
Sheets("分类回款明细【不含离职人员及手工】").Select '选择对象分类回款明细【不含离职人员及手工】
Range("J2").Select '选项对象J2列
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False '非格式化粘贴(仅仅粘贴数字)
Worksheets("回款明细汇总").Rows("1:1").AutoFilter '关闭筛选'
Application.CutCopyMode = False '退出粘贴
'Worksheets("回款明细汇总").Range("1:" & irow).AutoFilter field:=10, Criteria1:="是" '筛选第10列
'Worksheets("回款明细汇总").Range("1:" & irow).AutoFilter field:=8, Criteria1:="信贷M2+"
'Worksheets("回款明细汇总").Range("A:G").Copy
'Sheets("分类回款明细【不含手工】").Select
'Range("R2").Select
' Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Worksheets("回款明细汇总").Rows("1:1").AutoFilter '关闭筛选'
'Application.CutCopyMode = False '退出粘贴
End Sub
Sub 刷新()
复制
分类回款明细
End Sub
(7)主要执行fenqi表清空、筛选、选择最大行 、复制、粘贴、排序、排名、新 插入一列、循环判断、日期格式、自动调整列宽、调整百分比、隐藏各个辅助表功能
Sub seperate_worksheets()
Application.ScreenUpdating = False
'清空区域
Worksheets("总回收率辅表").Columns("A:K").Clear
Worksheets("M1_1回收率").Columns("A:J").ClearContents
Worksheets("M1_2回收率").Columns("A:J").ClearContents
Worksheets("M2_1回收率").Columns("A:J").ClearContents
Worksheets("M2_2回收率").Columns("A:J").ClearContents
Worksheets("M3回收率").Columns("A:J").ClearContents
Worksheets("总回退辅表").Columns("b:K").ClearContents
Worksheets("M1-1").Columns("A:K").ClearContents
Worksheets("M1-2").Columns("A:k").ClearContents
Worksheets("M2-1").Columns("A:k").ClearContents
Worksheets("M2-2").Columns("A:k").ClearContents
Worksheets("M3").Columns("A:k").ClearContents
'Call match
'If Worksheets("总回收率").Range("n3") = False Then
'MsgBox ("存在误差,请核实"): Exit Sub
'Else: MsgBox Range("N3").Value & "数据无误,继续执行"
'End If
'调整格式
Worksheets("总回收率").Select
Y = Range("A1").CurrentRegion.Rows.Count
Worksheets("总回收率").Select
Set edg = Range("A1:J" & Y)
Range("H2:H" & Y).Select
Selection.NumberFormatLocal = "0.00%"
edg.Copy
Worksheets("总回收率辅表").Select
Worksheets("总回收率辅表").Range("A1").Select
ActiveSheet.Paste
Worksheets("总回收率辅表").Select
Columns("F:F").Insert Shift:=xlToRight '在列(“F:F”)。插入移位:=xlToRight
X = Range("A1").CurrentRegion.Rows.Count '选择最多行
Range("F1") = "经理" '命名F列表头"经理"
Set rng = Range("A1:J" & X) '设置范围
For lkk = 2 To X ' 循环体
If rng(lkk, 5) = "陈新" Then '在循环体里面判断,如果在第(lkk, 5)五列任何一列的数据等于‘陈新’则,在第六列任何行对应写上刘慧
rng(lkk, 6) = "刘慧"
ElseIf rng(lkk, 5) = "史夕阳" Then
rng(lkk, 6) = "童超"
ElseIf rng(lkk, 5) = "刘易新" Then
rng(lkk, 6) = "童超"
ElseIf rng(lkk, 5) = "许国朝" Then
rng(lkk, 6) = "童超"
ElseIf rng(lkk, 5) = "严璐" Then
rng(lkk, 6) = "乔雨"
ElseIf rng(lkk, 5) = "费小翔" Then
rng(lkk, 6) = "乔雨"
ElseIf rng(lkk, 5) = "陆再婷" Then
rng(lkk, 6) = "刘慧"
ElseIf rng(lkk, 5) = "尚静" Then
rng(lkk, 6) = "刘慧"
ElseIf rng(lkk, 5) = "马玉铭" Then
rng(lkk, 6) = "刘慧"
ElseIf rng(lkk, 5) = "蒋鹏" Then
rng(lkk, 6) = "童超"
ElseIf rng(lkk, 5) = "李伟" Then
rng(lkk, 6) = "乔雨"
ElseIf rng(lkk, 5) = "张程" Then
rng(lkk, 6) = "乔雨"
ElseIf rng(lkk, 5) = "舒阳" Then
rng(lkk, 6) = "乔雨"
ElseIf rng(lkk, 5) = "石婷" Then
rng(lkk, 6) = "童超"
ElseIf rng(lkk, 5) = "嵇婷" Then
rng(lkk, 6) = "乔雨"
ElseIf rng(lkk, 5) = "王唯" Then
rng(lkk, 6) = "乔雨"
ElseIf rng(lkk, 5) = "冯雪" Then
rng(lkk, 6) = "乔雨"
End If
Next
rng.Sort key1:="实际回款金额", order1:=xlDescending, Header:=xlYes '按实际回款金额降序排序
'循环的目的是J列排名
Worksheets("总回收率辅表").Select '选择对象
For i = 2 To X '循环体
Range("J" & i) = i - 1
Next
Range("J:J").Select '选择对象
Selection.NumberFormatLocal = "G/通用格式" '设置J列格式
'回收率拆分至各子表
'表1
Worksheets("总回收率辅表").Select '选择对象
Range("A1:J" & X).AutoFilter field:=4, Criteria1:="M1-1" '筛选第四列=M1-1的数据
rng.Copy '复制
Worksheets("M1_1回收率").Select '选择对象
Worksheets("M1_1回收率").Range("A1").Select '选择对象A1
ActiveSheet.Paste '执行粘贴
Application.CutCopyMode = False '释放粘贴版
Worksheets("M1_1回收率").Select '选择对象
aaa = Worksheets("M1_1回收率").Range("A1").CurrentRegion.Rows.Count '选择最大行
'循环体最要排名
For pp = 2 To aaa
Range("J" & pp) = pp - 1
Next pp
'表2
Worksheets("总回收率辅表").Select '选择对象
Range("A1:J" & X).AutoFilter field:=4, Criteria1:="M1-2" '筛选第四列=M1-2的数据
rng.Copy '复制
Worksheets("M1_2回收率").Select '选择对象
Worksheets("M1_2回收率").Range("A1").Select '选择对象A1
ActiveSheet.Paste '执行粘贴
Application.CutCopyMode = False '释放粘贴版
Worksheets("M1_2回收率").Select '选择对象
B = Range("A1").CurrentRegion.Rows.Count '选择最大行
'循环体最要排名
For i1 = 2 To B
Range("J" & i1) = i1 - 1
Next
'建立回退辅表
Worksheets("总回退").Select '选择对象
p = Range("A1").CurrentRegion.Rows.Count '选择最大行
Range("G2:H" & p).Select '选择最大行G2:H的区域
Selection.NumberFormatLocal = "yyyy/mm/dd" '设置日期格式yyyy/mm/dd
Worksheets("总回退").Columns("A:J").Copy '复制选定区域
Worksheets("总回退辅表").Select '选择对象
Worksheets("总回退辅表").Range("B1").Select '选择对象B1
'不带格式粘贴
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
'回退数据整理格式
Worksheets("总回退辅表").Select '选择对象
f = Range("B1").CurrentRegion.Rows.Count '选择最大行
Set rw = Range("B1:K" & f) '定义rw = Range("B1:K" & f)
Range("H2:I" & f).Select '选择最大行
Selection.NumberFormatLocal = "yyyy/m/d" '调整日期格式
'回退数据拆分至各子表
'表1
Range("B1:M" & f).AutoFilter field:=4, Criteria1:="M1-1" '筛选第四列=M1-1的数据
rw.Copy '复制
Worksheets("M1-1").Select '选择对象
Worksheets("M1-1").Range("A1").Select '选A1择对象
ActiveSheet.Paste '粘贴
Application.CutCopyMode = False '释放剪贴板
Worksheets("M1-1").Columns("A:L").EntireColumn.AutoFit '调整所有列的列宽为自动列宽
'表2
Worksheets("总回退辅表").Select '选择对象
Range("B1:M" & f).AutoFilter field:=4, Criteria1:="M1-2" '筛选第四列=M1-2的数据
rw.Copy '复制
Worksheets("M1-2").Select '选择对象
Worksheets("M1-2").Range("A1").Select '选A1择对象
ActiveSheet.Paste '粘贴
Application.CutCopyMode = False '释放剪贴板
Worksheets("M1-2").Columns("A:L").EntireColumn.AutoFit '调整所有列的列宽为自动列宽
Application.CutCopyMode = False '释放剪贴板
'释放已定义内存
Set edg = Nothing
Set rw = Nothing
Set rng = Nothing
Worksheets("总回收率辅表").Range("A1:J1").AutoFilter '自动筛选
Worksheets("总回退辅表").Range("B1:M1").AutoFilter '自动筛选
Worksheets("总回退辅表").Visible = False '隐藏附表
Worksheets("总回收率辅表").Visible = False '隐藏附表
Worksheets("总回退").Visible = False '隐藏附表
Worksheets("总回收率").Visible = False '隐藏附表
Worksheets("跑出的数据").Visible = False '隐藏附表
Worksheets("批量添加").Visible = False '隐藏附表
Worksheets("M2-1").Visible = False '隐藏附表
Worksheets("M2_1回收率").Visible = False '隐藏附表
Worksheets("M2-2").Visible = False '隐藏附表
Worksheets("M2_2回收率").Visible = False '隐藏附表
Worksheets("M3").Visible = False '隐藏附表
Worksheets("M3回收率").Visible = False '隐藏附表
Worksheets("异常处理").Visible = False '隐藏附表
Worksheets("辅助添加").Visible = False '隐藏附表
Worksheets("组长排名").Select '选择对象
Application.ScreenUpdating = True '不隐藏附表
End Sub