Excel 2016
在Excel中,我正在尝试计算所有重复上次原因的相同工作。
但是我只需要最后的理由和重复的原因。
如果原因发生变化,则计数停止。
127.0.0.1
所以例如表 巴尔在31日,28日和27日有一个跳过。在24日有一份工作,因为无需进一步计算。结果就是。
date job reason
31/10/2017 barr skip
30/10/2017 sheep run
29/10/2017 pig run
28/10/2017 barr skip
27/10/2017 barr skip
26/10/2017 sheep run
25/10/2017 pig skip
24/10/2017 barr run
23/10/2017 car skip
22/10/2017 cow run
21/10/2017 car run
20/10/2017 cow skip
20/10/2017 barr skip
另请注意,此数据的长度约为800k。所以需要高效,不能访问任何形式的任何数据库。
我试过用countifs没有成功。任何帮助都会很棒
答案 0 :(得分:0)
首先,我假设你有办法创建一个20K的工作列表。有很多方法 - 如果你不需要它是完全动态的,可能是一个包含大量数据的数据透视表。
在我看来,获得最后一个理由的最佳方法是不使用强力数组公式方法,因为它太慢了。最好使用老式的数据处理方法 - 但我会说,因为我是一个老式的数据处理人员。
第1步
按作业对数据进行排序。 Excel排序非常快,而且稳定,所以你得到这个
date job reason
31/10/2017 barr skip
28/10/2017 barr skip
27/10/2017 barr skip
24/10/2017 barr run
20/10/2017 barr skip
23/10/2017 car skip
21/10/2017 car run
22/10/2017 cow run
20/10/2017 cow skip
29/10/2017 pig run
25/10/2017 pig skip
30/10/2017 sheep run
26/10/2017 sheep run
请注意,每个作业中的原因仍然存在。假设这是在一个名为jobs的工作表中。
第2步
然后,您可以使用一些快速简单的公式来获得您想要的结果。
B2中的工作开始
=MATCH(A2,jobs!B:B,0)
C2中的第一个原因
=INDEX(jobs!C:C,B2)
D2中每个工作的原因数
=COUNTIF(jobs!B:B,A2)
与E2中的第一个原因不同的原因索引
=IFERROR(MATCH(TRUE,(INDEX(jobs!C:C,B2):INDEX(jobs!C:C,B2+D2-1)<>C2),0),D2+1)
(这是一个数组公式,但只需搜索当前作业的空间,根据你的数字平均说出大约40个理由)
F2中第一个原因的重复次数
=E2-1
请注意,我在列表中首先说明了第一个原因,但这是按时间顺序排列的最后一个原因,因为您的列表按时间倒序排列。