我有许多列表示每月的销售额,例如以下可能表明两个月前该客户的销售额为 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 和矩阵函数来解决这个问题,而无需辅助行。但我感觉我遗漏了一些东西。