嗨,人们比我更擅长 Excel!感谢您提供的任何帮助。我会尽量简短:
我有一个 3 列表。月份(如 1、2、3 等)、销售人员姓名和销售额。每行是销售人员当月获得的销售额。
它的排列方式如下:前 1000 行都是 Jan/1,接下来的 1000 行都是 Feb/2,等等。
我需要得到每个销售人员过去 3 个月的平均销售额。但是——如果最后 3 个月的其中一个是空白的,我仍然需要 3 个月的平均值。
所以我需要这个公式来识别,例如,一个空白的 9 月结果,然后去获取下一个最近的结果(8 月,7 月,不管它可能是什么),所以它总是平均该销售人员最近 3 个月的结果,并且不只是 1 或 2 个结果。
现在我有一个非常简单的数据透视表。在我意识到这个问题之前,对我的目的来说工作得很好:(
有什么方法可以做到这一点(数据透视表与否)?有超过1000个销售人员,所以手动是不可行的。无论出于何种原因,我有很多人一个月没有数字,所以我需要解决这个问题。
谢谢你的帮助!请让我知道我是否可以包含其他内容或不清楚。
我不知道平均最近三个非空白月份的好方法,但这是一种非常老套的方法。这可能会引发一些更好的方法来实现它。
在您的原始数据中,创建一个表,然后按月份(降序)和人员排序。
接下来,过滤销售列并取消选择空白。然后将这些内容复制到另一个区域并粘贴。
然后创建一个“排名”列。单元格 D2 的公式,每个月对每个人进行排名(最近的是 1 等)。
然后有另一个区域与您不同的人(列 F),以及他们最近 3 个月的占位符列(标记为 1、2 和 3 的列)。
单元格 G2 公式:
将其拖到列标题 3 并向下。最后,创建你的平均公式。
采用一种不同的方法,使原始数据保持不变,无需重新排序、过滤或复制,将 3 个辅助列添加到数据列表中,如下所示。
Column Row是一个从 1 开始的简单索引系列,Person2列与Person相同,但使用 IF 函数在Sales为零的行中插入空字符串。MCount按Person提供非零销售额的月份计数。
MCount与包含每个销售人员的一行的结果列表交互,如下所示。
在结果列表中,Months列仅计算每个销售人员在数据列表中销售额非零的月份数。单元格 I2 中的公式是
=COUNTIFS(A$2:A$21,H2,$C$2:$C$21,">0")
RowM1显示数据列表中对应于每个销售人员销售额非零的第一个月的Row值。单元格 J2 中的公式是
=MATCH(H2,$E$2:$E$21,0)
列Month1、Month2和Month3是MCount列(数据列表)中的月份数,对应于用于计算 3 个月平均值的第一个月、第二个月和第三个月,而Sales1、Sales2和Sales3是这 3 个月的销售额值个月。平均值是计算的 3 个月平均值。
单元格 K2、L2 和 M2 的公式分别为
=I2-1
=K2+1
=L2+1
单元格 N2 中的公式是
=SUMIFS($C$2:$C$21,$E$2:$E$21,$H2,$F$2:$F$21,K2)
并依赖于数据列表的MCount列中的值(范围
$F$2:$F$21
,见下)。单元格 N2 被复制到单元格 O2 和 P2。范围 I2:Q2 可以复制到结果列表的所有后续行。
数据列表 - MCount列
单元格 F2 中的公式是
=IF(C2>0,1,0)
这会将 0 或 1 放入单元格中。0 表示单元格 E2 中的人在单元格 中显示的月份没有销售额
B2
,而 1 表示这是此人的第一个月的销售额。单元格 F3 中的公式要复杂得多,并且是
=IF(LEN(E3)=0,0,IF(VLOOKUP(E3,H$2:J$3,3,FALSE)=D3,1,1+MAXIFS(F$2:F2,E$2:E2,E3)))
如果行对应于零销售额,则第一个 IF 的 TRUE 部分仅提供 0 。
否则,Sales不为零,并触发第二个 IF。在第二个 IF中,在结果表中查找单元格 E3 中 的Person ,如果RowM1值(数据列表中对应于第一个月销售的行号)与单元格 D3 中的Row值匹配,这意味着第 3 行对应于单元格 E3 中标识的人员的第一行销售额非零。
如果RowM1和Row值不同,则数据表中的第 3 行对应于单元格 E3 中人员的下一个销售月份(第一个月之后)。在这种情况下,月份数是通过将数据列表前面行中单元格 E3 中的销售人员的 F 列中的最大值加 1 获得的。MAXIFS 函数用于确定此最大值。
单元格 F3 中的公式将复制到数据列表的后续行。在公式中适当使用相对和绝对寻址可确保 MAXIFS 函数使用副本中适当的单元格范围。
笔记