By Mejias
注:为了防止信息泄露,数据经过处理。
业务要求:
如下有一张总表,需在B列和C列满足特定条件的情况下,把A:I列复制到“Target_dealing”表,然后在这张表新增J,K两列,J列使用EXCCEL公式显示G列和I列同行值是否相同,K列使用EXCEL公式显示F列和I列同行值是否相同,计算J列为“FALSE”(不同)的个数填入单元格M1,计算K列为“FALSE”填入单元格N1。
最后需要生成汇报:
1.G列与I列不同的个数(M1的值)
2.F列和I 列不同个数(N1的值)
3.G列与I列不同,且H列等于0.98(两者均满足)的数量。
4.G列与I列不同,且H列等于0.85(两者均满足)的数量。
5.G列与I列不同,且H列等于0.92(两者均满足)的数量。
6.G列与I列不同,且F列与I列不同(两者均满足)的数量
代码书写如下:
首先定义好所有需要的变量, 使用inputbox,在EXCEL弹出对话框输入我们需要的条件,复制表1到表2,然后循环所有行删除不符合条件的整行。
Sub auto_report()
Dim mybook As Workbook
Dim orig, target, SJ As Worksheet
Dim total, ROWC, ind As Integer '定义总行数和行标记
Dim weeknum, carrier, Carrier_code, AMAZ_code, Final_Code
Dim Score
Dim box_week, box_carrier, box_CarrierC, box_AMAZC, box_FinalC, box_Score '定义列名和单元格值
Dim marvin_num, MC_Num, marvinNE, marvinNT, marvinEF, carrier_num, THrd_num As Integer '需要汇报的最终数据
Dim JUDGE_F, JUDGE_FK '新增使用EXCEL =VALUE()=VALUE()后的列
Dim judge_marvin
Dim judgeNE
Dim judgeNT
Dim judgeEF
'上面均为定义“JUDGE_SCORE"表判断使用的单元格
Set mybook = Workbooks("AMBER REPORT AUTOREPORT.xlsm")
Set orig = Sheets("Carriers total data")
Set target = Sheets("target dealing")
Set SJ = Sheets("JUDGE_SCORE")
'copy the original list to target list
orig.Range("A:I").Copy target.Range("A:I")
'get the row count in used sheet
total = target.Range("B1").End(xlDown).Row
’使用inputbox,在EXCEL弹出对话框输入我们需要的条件,根据条件复制表1到表2
weeknum = Int(InputBox("请输入需要的weeknum"))
carrier = InputBox("请输入需要的carrier")
ind = 2
line1:
total = total - 1
Do While ind <= total + 1
box_week = target.Range("B" & ind)
box_carrier = target.Range("D" & ind)
If box_week <>