我已经尝试过很多方法,但却无法得到我需要的东西。
我有一张包含这些数据的Excel表格:(这是一个摘要,我有超过150 000行)
A B C
30170 38,08 553299
30170 -12 553299
30170 -0,8 553299
30172 38,08 553299
30172 -12 553299
30172 -0,8 553299
30173 19,04 553299
30173 -6 553299
30173 -0,4 553299
30174 19,04 553299
30174 -6 553299
30174 -0,4 553299
90221 197,29 553299
90221 -5,92 553299
我需要做什么:
测试A列和C列中的每个单元格
选择(行)匹配
删除比赛的最后一行
循环到Excel工作表的末尾。
更准确地说,我需要计算B列中的每一行,并与选择的最后一行进行比较。
示例:前三行是相同的,前两行加上它然后*加3%,如果最后一行相等,则删除最后一行。
不确定我是否清楚,如果您需要更多信息,请告诉我。
答案 0 :(得分:0)
这可能会起作用并跳过循环(相当于更快的执行速度)
Sub Sample()
Range("D2").FormulaR1C1 = _
"=IF(RC[-3]&RC[-1] = R[1]C[-3]&R[1]C[-1],"""",IF(ABS(CEILING(SUMIFS(R[-1]C2:R2C2,R[-1]C1:R2C1,RC1,R[-1]C3:R2C3,RC3)*0.03,0.1))=ABS(RC[-2]),""Delete"",""""))"
Range("D2").AutoFill Destination:=Range("D2:D15"), Type:=xlFillDefault
Range("D1").AutoFilter Field:=4, Criteria1:="<>"
Range("D2", Range("D" & Rows.Count)).SpecialCells(xlCellTypeVisible).EntireRow.Delete
Columns("D").Delete
ActiveSheet.AutoFilterMode = False
End Sub
警告: 还要测试数据的 COPY 代码,直到您100%确定它是正确的
注意: 如果您不需要添加更多行以获得完整功能,则此答案假定您的数据上有标题。