You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Excel中如何对月度成交率平均值求平均并排除无数据月份

Excel中如何对月度成交率平均值求平均并排除无数据月份

兄弟,我太懂你这种刚做销售想盯紧自己数据的心情了!你的公式思路方向是对的,但就是栽在无数据月份的干扰上——那些还没产生线索的月份要么算出0要么出错误值,直接拉低了整体平均。给你几个实用的解决方案,按需选就行:

方案1:优化你现有的LET公式(兼容旧版Excel)

核心思路是:把无数据月份的计算结果改成NA()(Excel的“无效值”),而AVERAGE函数会自动忽略NA()值,这样就不会把空月份算进去了。同时我还帮你简化了FILTER里的多余IF判断,原来的IF(MONTH(ApptDate)=m,B8:B500,0)完全没必要,直接用MONTH(ApptDate)=m当筛选条件就行。

修改后的完整公式:

=LET(
  janClosing, IFERROR(SUMPRODUCT((MONTH(CloseDate)=1)*(CloseDate<>""))/COUNTA(FILTER(B8:B500,MONTH(ApptDate)=1)), NA()),
  febClosing, IFERROR(SUMPRODUCT((MONTH(CloseDate)=2)*(CloseDate<>""))/COUNTA(FILTER(B8:B500,MONTH(ApptDate)=2)), NA()),
  marClosing, IFERROR(SUMPRODUCT((MONTH(CloseDate)=3)*(CloseDate<>""))/COUNTA(FILTER(B8:B500,MONTH(ApptDate)=3)), NA()),
  aprClosing, IFERROR(SUMPRODUCT((MONTH(CloseDate)=4)*(CloseDate<>""))/COUNTA(FILTER(B8:B500,MONTH(ApptDate)=4)), NA()),
  mayClosing, IFERROR(SUMPRODUCT((MONTH(CloseDate)=5)*(CloseDate<>""))/COUNTA(FILTER(B8:B500,MONTH(ApptDate)=5)), NA()),
  junClosing, IFERROR(SUMPRODUCT((MONTH(CloseDate)=6)*(CloseDate<>""))/COUNTA(FILTER(B8:B500,MONTH(ApptDate)=6)), NA()),
  julClosing, IFERROR(SUMPRODUCT((MONTH(CloseDate)=7)*(CloseDate<>""))/COUNTA(FILTER(B8:B500,MONTH(ApptDate)=7)), NA()),
  augClosing, IFERROR(SUMPRODUCT((MONTH(CloseDate)=8)*(CloseDate<>""))/COUNTA(FILTER(B8:B500,MONTH(ApptDate)=8)), NA()),
  septClosing, IFERROR(SUMPRODUCT((MONTH(CloseDate)=9)*(CloseDate<>""))/COUNTA(FILTER(B8:B500,MONTH(ApptDate)=9)), NA()),
  octClosing, IFERROR(SUMPRODUCT((MONTH(CloseDate)=10)*(CloseDate<>""))/COUNTA(FILTER(B8:B500,MONTH(ApptDate)=10)), NA()),
  novClosing, IFERROR(SUMPRODUCT((MONTH(CloseDate)=11)*(CloseDate<>""))/COUNTA(FILTER(B8:B500,MONTH(ApptDate)=11)), NA()),
  decClosing, IFERROR(SUMPRODUCT((MONTH(CloseDate)=12)*(CloseDate<>""))/COUNTA(FILTER(B8:B500,MONTH(ApptDate)=12)), NA()),
  AVERAGE(janClosing,febClosing,marClosing,aprClosing,mayClosing,junClosing,julClosing,augClosing,septClosing,octClosing,novClosing,decClosing)
)

方案2:动态数组简洁版(适合Excel 365/2021)

如果你的Excel是365或2021版本,用这个公式更省心——不用手动写12个月的变量,自动遍历1-12月计算成交率,同样排除无数据月份:

=LET(
  months, SEQUENCE(12),
  monthly_rate, BYROW(months, LAMBDA(m,
    IFERROR(
      SUMPRODUCT((MONTH(CloseDate)=m)*(CloseDate<>""))/COUNTA(FILTER(B8:B500,MONTH(ApptDate)=m)),
      NA()
    )
  )),
  AVERAGE(monthly_rate)
)

公式拆解:

  • SEQUENCE(12):自动生成1到12的月份数组
  • BYROW(months, LAMBDA(m,...)):逐个遍历每个月份m,计算当月成交率
  • IFERROR(..., NA()):把无数据月份的错误/无效值转成NA(),让AVERAGE自动忽略
  • 最后AVERAGE(monthly_rate):只算有数据月份的成交率平均值

方案3:单独列月度成交率(兼顾记录需求)

你提到“可能单独记录每个月的成交率也不错”,这个方法最直观,还方便排查每个月的数据:

  1. 在表格空白处列1-12月,比如C1:C12分别输入112(代表月份)
  2. 在D1单元格输入1月成交率公式,下拉到D12:
    =IFERROR(SUMPRODUCT((MONTH(CloseDate)=C1)*(CloseDate<>""))/COUNTA(FILTER(B8:B500,MONTH(ApptDate)=C1)), "")
    
  3. 最后在任意单元格用=AVERAGE(D1:D12)计算平均——AVERAGE会自动忽略空单元格,完美排除无数据的月份!

额外小贴士

  • 确保CloseDateApptDate这两个命名区域的范围和B8:B500完全一致,不然会出现引用错误
  • 如果你的新线索判断是“只要有预约日期就算新线索”,可以把COUNTA(FILTER(B8:B500,MONTH(ApptDate)=m))改成COUNTIFS(ApptDate,">="&DATE(YEAR(TODAY()),m,1),ApptDate,"<="&EOMONTH(DATE(YEAR(TODAY()),m,1),0)),这样不用依赖B列的标记,直接从预约日期统计新线索数,更准确!

火山引擎 最新活动