【问题标题】:excel 2016 count consecutive occurrencesexcel 2016 计算连续出现次数
【发布时间】:2017-10-31 09:07:14
【问题描述】:

Excel 2016

在 Excel 中,我试图计算所有重复最后一个原因的相同工作。

但是,如果重复,我只需要最后一个原因和该原因的计数。

如果原因发生变化,则计数停止。

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

所以例如表 巴尔在 31 日、28 日和 27 日有一个跳过。 24日有作业运行,无需再计较。所以结果会是。

Job Last Reason EMV
barr Skip 3
sheep run 2
pig run 1
car run 1
cow skip 1

另外请注意,此数据的长度约为 800k。所以需要高效,不能访问任何形式的任何数据库。

我试过countifs没有成功。

【问题讨论】:

  • 您好,非常感谢您的评论。我不是在寻找重复的配对。根据您的链接。我只需要计算最后出现的次数。
  • 所以你需要数对数并减去1?
  • 例如,作业“barr”可能已经出现了 2000 多次。但是,我只需要计算最后一次出现的相同原因。所以在上面的例子中,“barr”显示了 5 次,最后一个原因是“skip”并且重复了 3 次。所以只需要那个结果。
  • 第 2 列中的姓名数量是固定的,还是随机的?

标签: excel excel-formula


【解决方案1】:

首先,我假设您有某种方法可以创建一个包含 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

请注意,每个作业中的原因仍然是有序的。假设这是在名为作业的工作表中。

第 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

请注意,我将列表中的第一个原因称为第一个原因,但它是按时间顺序排列的最后一个原因,因为您的列表是按时间倒序排列的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 2013-03-04
    • 2019-09-01
    • 1970-01-01
    相关资源
    最近更新 更多