我正在尝试在我拥有的表格中加快COUNTIFS公式 该表超过6万行,COUNTIFS有三个条件。现在的公式如下:
=IF(AND(COUNTIFS([Vessel],[@Vessel],[Date],">"&[@Date],[ETA],"<="&[@ETA]+20)=0,[@Arrived]=1,[@Sailed]=1,[@Date]<MAX([Date])),1,0)
问题在于计算需要很长时间,并且每次发生变化时都会触发,甚至是过滤器。我不想在这张表中将计算结果变为手册。
公式的目的是找到下一次出现的船只,ETA可以每天稍微改变,或者同一艘船可以在几个月后出现。我需要确认该船是否在另一天出现相同的ETA(或最多20天的差异)。
这个问题还有其他解决办法吗?
答案 0 :(得分:0)
也许尝试将其构建为宏,这样就可以控制它何时执行。
这是开始执行此操作的方法。它完成了工作,但在处理完最后一行时/之后中断了错误。编辑:修复并测试
Public Sub shipcheck()
Application.ScreenUpdating = False
Dim x As Long
Dim y As String
Dim counter As Long
For x = 2 To Range("A85536").End(xlUp).Row ' Assuming data has headers
y = Cells(x, 1) ' This assumes your vessel is in the first column
counter = x + 1
Do
If cells(counter,1) = "" Then Exit Do
If y = Cells(counter, 1) Then
If Cells(x, 2) <> Cells(counter, 2) Then 'This assumes your date is the second column
If DateDiff("d", Cells(x, 3), Cells(counter, 3)) > 20 Then ' this assumes ETA is your third column
Cells(x, 4) = 1 'This assumes the positive test is the fourth column
Cells(counter, 4) = 1
Exit Do
Else
End If
Else
End If
Else
End If
counter = counter + 1
Loop
Next x
Application.ScreenUpdating = True
End Sub