Excel多IF公式需求:按销量值分类为6组并返回组字母
Excel销量分组公式解决方案
首先看你原来的公式,问题主要出在语法错误和判断顺序逻辑上:比如AND([@[Sales]<=160, [Sales]]>1)这里,单元格引用不完整(少了闭合的方括号),而且IF函数的判断顺序最好从最高阈值开始,避免低阈值的条件先触发导致高阈值的情况被错误分类。
针对你的6个分组规则,我整理了两个可行的公式方案,你可以根据自己的习惯选择:
方案一:嵌套IF函数(最直观)
这个方案严格按照你的分组规则,从最高销量到最低销量依次判断,逻辑清晰不容易出错:
=IF([@[Sales]]>800,"A", IF([@[Sales]]>=300,"B", IF([@[Sales]]>=200,"C", IF([@[Sales]]>=160,"D", IF([@[Sales]]>=1,"E", "F")))))
逻辑拆解:
- 先判断是否超过800,符合就返回"A"
- 剩下的范围自动缩小到≤800,再判断是否≥300(自然对应300-800区间),返回"B"
- 以此类推,最后没被匹配到的就是销量为0的情况,直接返回"F"
方案二:使用LOOKUP函数(更简洁)
如果觉得嵌套IF太繁琐,LOOKUP函数会更清爽,它会自动匹配最接近的小于等于查找值的区间:
=LOOKUP([@[Sales]],{0,1,160,200,300,801},{"F","E","D","C","B","A"})
逻辑拆解:
{0,1,160,200,300,801}是分组的阈值起点数组{"F","E","D","C","B","A"}是对应阈值的组字母数组- 比如销量是500,会匹配到300这个阈值,返回"B";销量是850,匹配到801,返回"A"
另外提醒一下:你公式里的[@[Sales]]是表格格式的结构化引用,如果你的数据不是表格形式,直接换成普通单元格引用就行,比如把[@[Sales]]改成A2(假设销量在A列,从第二行开始)。
内容的提问来源于stack exchange,提问作者brooke
相关产品推荐
相关产品推荐

