我想使用 Excel 计算一系列数据中的“最佳”和“当前”连续性。
假设一家商店的日销售目标是 500 件。我有一列包含过去 5 年的每日销售数据。我该如何使用这些数据来计算我实现销售目标的最佳天数以及我当前的天数。
我尝试使用 COUNTIF(C:C,">=500"),但问题是它只计算达到目标的所有天数,而不计算最佳“连续”天数,也不记录连续达到目标的天数。
在此先致以最诚挚的谢意。
答案1
辅助列可使此操作更加简单。让我们看看是否可以不使用辅助列。
基本方法
实际上我们根本不会使用COUNTIF
,只是一个简单的递增计数器。
笔记我们已将您的销售目标设为动态,并将其定义在单元格中D1
。事实证明,将其放在其他地方会稍微简单一些;因此,如果您遵循这些说明,您可能更愿意将其放入,G1
并将$D$1
后面的所有单元格引用调整为$G$1
。
这个公式有效
=IF(C2<$D$1,"dq",IF(AND(C1<$D$1,C2>=$D$1),1,D1+1))
=IF(C2<$D$1,"dq",
如果当前记录不符合条件,则取消其资格。
IF(AND(C1<$D$1,C2>=$D$1),1,
如果当前记录是第一个连续的限定符(C1<$D$1
测试前一条记录是否为“dq”状态;C2>=$D$1
测试当前记录是否符合条件),则将其值等于 1
D1+1))
否则 - 即如果当前记录既不是取消资格的总数也不是第一个合格的总数,则使其值等于其上方的记录加一。
此公式从D2
。请注意,如果第一条记录(第 2 行)是合格记录,并且您使用D1
as I have 来定义目标,则会导致此确切设置出现问题,因为D1
看起来像是 500 的连续记录。有许多简单的方法可以解决这个问题;出于示例的目的,我刚刚选择指定第一条记录不合格,以简单起见。
从这里开始添加接下来的几个功能应该非常简单。
添加“最长连续记录”
=MAX(INDIRECT("D2:D"&COUNTA(D:D)))
我们在这里使用动态单元格引用,因此我们不必担心扩大范围。我们不能D:D
再次使用,因为最大值将返回为 中的 500。但是,如果您愿意,D1
您可以简单地写或任何其他内容。无论如何,使用都是很好的做法。=MAX($D$2:$D$9999)
INDIRECT
然后,想必您已经有了身份信息,A
也许B
是您想要与您的“最长连续记录”关联的日期?
相关数据
=INDEX(B:D,MATCH(G2,D:D,0),1)
找到INDEX
MATCH
(第一的) 达到的最长连续记录实例,如上面的单元格所计算。
限制
- 正如我所提到的,因为我们没有使用数组或任何真正复杂的内容,所以在平局的情况下,这将返回该长度的连胜的第一次出现。我称之为一个功能——你还没有创造新的记录,直到你被殴打最后一个吧?
- 出于同样的原因,如果你想知道发生了什么以及何时发生,这种方法就不太管用了。第 n 个- 任何值的最长条纹n大于 1。它可以告诉你什么这些条纹是 - 用于
LARGE
那个 - 但由于长度(第 n 个-最长的连续记录n>1) 按照定义会发生多次,因此使用此方法查找该连续事件的日期将不起作用。 - 这要求数据集如您的示例中所示/给出的那样 - 显然,销售记录必须按日期排列;也许更重要的是要注意,它仅适用于包含单个商店数据的工作表。