查找下一个值 - COUNTIF太慢了

时间:2014-08-15 17:19:42

标签: excel excel-formula excel-2010

我正在尝试在我拥有的表格中加快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天的差异)。

这个问题还有其他解决办法吗?

1 个答案:

答案 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