如何让MATCH函数从右往左分析?解决客户购后空白月数统计问题
统计客户上次购买至今月数的公式方案
你的需求是找到每行(客户)最右侧的购买记录,计算它到当前最右月份列的空白单元格数量,也就是上次购买至今的月数。原公式=MATCH(FALSE,ISBLANK(C7:L7),0)-1是从左往右找第一个非空单元格,所以得到的是首次购买前的空白数,这里给你几个可行的解决方案:
1. 兼容多数Excel版本的LOOKUP公式
这个公式不需要特殊版本支持,直接输入即可:
=COLUMNS(C7:L7)-LOOKUP(2,1/(NOT(ISBLANK(C7:L7))),COLUMN(C7:L7)-COLUMN(C7)+1)
- 逻辑:
NOT(ISBLANK(C7:L7))标记所有非空单元格为TRUE,1/(...)把非空转为1、空单元格转为错误值;LOOKUP(2,...)会忽略错误值,定位到最后一个非空单元格的列序号(相对于C列的位置,比如C是1,D是2...);总列数减去这个序号,就是最后一次购买后到当前的空白月数。
2. Excel 365/2021专用的XLOOKUP公式
如果你的Excel是365或2021及以上版本,用XLOOKUP更直观,支持反向查找:
=COLUMNS(C7:L7)-XLOOKUP(TRUE,NOT(ISBLANK(C7:L7)),SEQUENCE(1,COLUMNS(C7:L7)),,0,-1)
- 逻辑:
SEQUENCE(1,COLUMNS(C7:L7))生成对应C到L的列序号(1到10);XLOOKUP的最后一个参数-1表示从右往左查找,找到第一个非空单元格对应的序号;总列数减去该序号就是目标月数。
3. 用INDEX+MATCH实现反向查找
如果想结合你尝试过的INDEX和MATCH,可以用这个数组公式(旧版本Excel需要按Ctrl+Shift+Enter确认输入,365版本直接回车即可):
=COLUMNS(C7:L7)-MATCH(TRUE,INDEX(NOT(ISBLANK(C7:L7)),0,COLUMNS(C7:L7):1),0)
- 逻辑:
INDEX(NOT(ISBLANK(C7:L7)),0,COLUMNS(C7:L7):1)把C7:L7的非空判断结果反转成从L到C的顺序;MATCH找到反转后第一个TRUE的位置,总列数减去这个位置就是空白月数。
内容的提问来源于stack exchange,提问作者Katie
相关产品推荐
相关产品推荐

