【发布时间】:2016-07-26 08:12:09
【问题描述】:
我希望有人可以提供帮助。我有一个超过 65,000 行的 Excel 表。我附上了我正在努力实现的目标的图片
J 列和 N 列是重要的列,您可以在单元格 J2 中看到支付了 800 的款项,在单元格 N2 中您可以看到它是在 2015 年 11 月 16 日支付的。在 J3 单元格中,您可以看到我们收回了 -800 的钱,并在 2016 年 1 月 4 日的 N3 单元格中收回。
有没有一种方法或一些逻辑或 VBA 代码可以让我轻松识别这些在 2015 年支付并在 2016 年收回的付款。我可以用这个数字来说明什么会恢复到零,或者我可以使用黄色的 D 和 L 列来识别这些数量。滚动浏览 65,000 行会让我盲目地试图识别这些数量,任何帮助将不胜感激。
Sub Macro2()
Dim lastrow As Long
Dim lastColumn As Long
Application.ScreenUpdating = False
lastColumn = ActiveSheet.UsedRange.Column - 1 + ActiveSheet.UsedRange.Columns.Count
lastrow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
Columns("A:A").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A2").Select
ActiveCell.FormulaR1C1 = "1"
Range("A3").Select
ActiveCell.FormulaR1C1 = "2"
Range("A2:A3").Select
Selection.AutoFill Destination:=Range("A2:A" & lastrow)
Range("A1").Value = "Row ID"
Columns("Q:Q").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("Q1").Select
ActiveCell.FormulaR1C1 = "positive identifier"
Columns("R:R").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("R1").Select
ActiveCell.FormulaR1C1 = "Matching row ID"
Range("Q2").Select
ActiveCell.FormulaR1C1 = "=1*AND(RC[-6]>0,YEAR(RC[-1])=2015)"
Range("Q2").Select
Selection.Style = "Comma"
Selection.AutoFill Destination:=Range("Q2:Q" & lastrow)
For i = 2 To lastrow
For j = 3 To lastrow
If Cells(i, 5).Value = Cells(j, 5).Value And Cells(i, 11).Value > 0 And Cells(i, 11).Value = -1 * Cells(j, 11).Value And Year(Cells(i, 16).Value) = 2015 And Year(Cells(j, 16).Value) = 2016 Then
Cells(i, 18).Value = j - 1
End If
Next
Next
Range("R2:R" & lastrow).Select
Selection.Style = "Comma"
Application.ScreenUpdating = True
End Sub
有一些代码,但它的窃听
If Cells(i, 5).Value = Cells(j, 5).Value And Cells(i, 11).Value > 0 And Cells(i, 11).Value = -1 * Cells(j, 11).Value And Year(Cells(i, 16).Value) = 2015 And Year(Cells(j, 16).Value) = 2016 Then
【问题讨论】:
-
vba 确实可以胜任。你会考虑使用 excel-formula 吗?
-
@Rosetta:是的,我当然会考虑使用公式。你有一个可能有用的吗?
-
好的...您可以对数据进行排序吗? 65000行,排序可以提高性能速度。