Excel如何编写单公式适配多空值场景按规则拼接3单元格字符
Excel 单通用公式实现三单元格空值适配的3位字符拼接
需求说明
需要编写单个通用Excel公式,适配A、B、C三个单元格的任意空值组合,按固定规则自动生成3位长度的字符拼接结果,匹配规则如下:
- 规则1:A、B、C均有内容时,取三个单元格的首字符拼接。例:A=Eat、B=Sleep、C=Repeat,输出
ESR - 规则2:A为空、B和C有内容时,取B单元格前2个字符加C单元格首字符拼接。例:A为空、B=Sleep、C=Repeat,输出
SlR - 规则3:A和C均为空、仅B有内容时,取B单元格前3个字符作为结果。例:A、C为空、B=Sleep,输出
Sle - 规则4:C为空、A和B有内容时,取A单元格首字符加B单元格前2个字符拼接。例:A=Eat、C为空、B=Sleep,输出
ESl
已有的分场景独立公式(以第1行数据为例,对应单元格A1/B1/C1):
- 全非空场景:
=LEFT(A1,1)&LEFT(B1,1)&LEFT(C1,1) - A空BC非空场景:
=LEFT(B1,2)&LEFT(C1,1) - AC空仅B非空场景:
=LEFT(B1,3) - C空AB非空场景:
=LEFT(A1,1)&LEFT(B1,2)
通用公式方案
直接用嵌套IF判断空值状态即可覆盖所有规则,兼容所有主流Excel版本,输入后直接回车生效,公式如下:
=IF(A1<>"",IF(C1<>"",LEFT(A1,1)&LEFT(B1,1)&LEFT(C1,1),LEFT(A1,1)&LEFT(B1,2)),IF(C1<>"",LEFT(B1,2)&LEFT(C1,1),LEFT(B1,3)))
逻辑说明
判断优先级完全匹配给定规则,无遗漏场景:
- 第一层先判断A1是否非空:
- 若A1非空,第二层判断C1是否非空:C1非空则匹配规则1取三个单元格首字符;C1为空则匹配规则4取A首字符+B前2位字符
- 若A1为空,第二层判断C1是否非空:C1非空则匹配规则2取B前2位字符+C首字符;C1为空则匹配规则3取B前3位字符
结果验证
用给定测试用例校验公式输出:
- A1=Eat、B1=Sleep、C1=Repeat:返回
ESR,符合预期 - A1留空、B1=Sleep、C1=Repeat:返回
SlR,符合预期 - A1留空、B1=Sleep、C1留空:返回
Sle,符合预期 - A1=Eat、B1=Sleep、C1留空:返回
ESl,符合预期
注:以上公式默认B单元格始终有值,如果需要适配B单元格为空的异常场景,可在外层追加一层判断,自定义返回空值或提示文本即可。
内容的提问来源于stack exchange,提问作者Manoj Churya
相关产品推荐
相关产品推荐

