Excel 公式,计算自上次非零以来的单元格数量

Excel 公式,计算自上次非零以来的单元格数量

我有许多列表示每月的销售额,例如以下可能表明两个月前该客户的销售额为 3555 美元。

0,0,0,0,0,0,0,0,0,3555,0,0

我需要一个公式来计算自上次销售以来的月份数,即在这种情况下的结果应该是 2。

答案1

进一步阐述Jook的回答:

假设 1 至 12 个月的销售值位于单元格 A1:L1 中。

我们可以使用数组公式来找到所需的结果:

=COLUMN(L1)-MAX(IF(A1:L1>0,COLUMN(A1:L1),0))

输入公式并键入++Ctrl以 将其指定为数组公式。Excel 将自动显示花括号:ShiftEnter

{=COLUMN(L1)-MAX(IF(A1:L1>0,COLUMN(A1:L1),0))}

(不要输入括号。)

这将创建一个虚拟数组,用于保存销售额大于零的单元格的列号,并找到最大的列号(即最接近报告期末的列号)。然后我们需要从最后一列的数字中减去这个值。

答案2

这是解决此问题的快速方法。但是,您需要一个辅助行,这意味着还有改进的空间。也许其他人可以从这里借鉴。

设置如下:

month 1 2 3 4 5 6 7 8 9 10 11 12
sale  0 0 0 0 5 0 0 0 8 11 0  0 
help  0 0 0 0 5 0 0 0 9 10 0  0

帮助公式:

IF(SALE>0,MONTH,0) - IF(A2>0,A1,0)

距上次销售已有几个月:

MAX(A1:L1)-MATCH(MAX(A3:L3);A3:L3;0)

主要问题是获得销售额大于 0 的最大列数。目前,我只能想到使用 VBA 和矩阵函数来解决这个问题,而无需辅助行。但我感觉我遗漏了一些东西。

相关内容