Power Query自定义列:实现省份编码变更的布尔值判断
Excel判断单元格内省份代码是否存在差异的公式方案
需求说明
Excel某列单元格内容为类似SK36 > SK30 > AB01的省份编码串,仅需关注每个编码的前两位字母(省份代码),忽略后续数字。需编写公式实现:
- 单元格内存在至少一个不同省份代码时,返回True
- 所有省份代码完全相同时,返回False
解决方案
方法1:适用于Excel 365/2021(支持TEXTSPLIT函数)
假设目标单元格为A1,使用以下公式:
=NOT(COUNTUNIQUE(LEFT(TEXTSPLIT(A1," > "),2))=1)
公式逻辑:
TEXTSPLIT(A1," > "):将单元格内容按>拆分,得到所有编码的数组LEFT(...,2):提取每个编码的前两位字母,得到省份代码数组COUNTUNIQUE(...):统计数组中不同省份代码的数量NOT(...):当数量等于1(全相同)时返回False,数量大于1(存在差异)时返回True
方法2:适用于旧版Excel(无TEXTSPLIT函数)
使用数组公式(输入后按Ctrl+Shift+Enter确认):
=NOT(SUMPRODUCT(--(LEFT(MID(SUBSTITUTE(A1," > ","|"),FIND("|",SUBSTITUTE(A1," > ","|",ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1," > ",""))+1)))-1,2),2)<>LEFT(A1,2)))=0)
公式逻辑:
- 通过
SUBSTITUTE和MID函数拆分出每个编码的前两位字母 - 对比每个省份代码是否与第一个编码的省份代码一致
SUMPRODUCT统计不一致的数量,若为0则说明全相同,NOT()取反得到最终结果
示例修正
你给出的示例逻辑存在混淆,按照需求正确结果应为:
AB01 > AB55 > AB75(全为AB)→ 返回FalseSK36 > SK30 > AB01(含SK、AB两种)→ 返回True
内容的提问来源于stack exchange,提问作者Olendris63
相关产品推荐
相关产品推荐

