如何使用Power Query识别列中的Cost Code(成本代码)数据
成本代码识别解决方案
提炼的成本代码规则
从示例中可总结有效Cost Code的核心特征:
- 必须以数字开头
- 主体部分仅包含数字和英文句号,可有多段(如
10.01.01、40.001、3000) - 允许在主体后追加
- 字母组合的后缀(如2000.0001 - ABC) - 以下情况判定为无效:包含字母与数字混合的非后缀部分、纯字母、含下划线等特殊符号
正则表达式匹配方案
可以用以下正则表达式精准匹配有效Cost Code:
^\d+(\.\d+)*(- [A-Za-z]+)?$
正则解释
^\d+:开头必须是一个或多个数字(\.\d+)*:可选的、重复出现的「句号+数字」组合,支持多段数字(如.01、.001)(- [A-Za-z]+)?:可选的后缀部分,格式为「空格减号空格+大小写字母组合」$:匹配到字符串结尾,确保无多余无效字符
各工具中的实现示例
1. Excel中使用
在空白单元格(如C2)输入公式,下拉即可批量判断:
=IF(REGEXMATCH(A2,"^\d+(\.\d+)*(- [A-Za-z]+)?$"),"是代码","非代码")
注:需Excel 365及以上版本支持REGEXMATCH函数
2. Python中使用
用re模块实现批量识别:
import re cost_code_pattern = re.compile(r'^\d+(\.\d+)*(- [A-Za-z]+)?$') test_codes = [ "10.01.01", "40.001", "3000", "2000.0001 - ABC", "500.ABC", "ABC DEF", "01_ABC" ] for code in test_codes: if cost_code_pattern.match(code): print(f"{code}: 是代码") else: print(f"{code}: 非代码")
3. SQL中使用(以MySQL为例)
用REGEXP操作符判断:
SELECT A列 AS 待识别内容, CASE WHEN A列 REGEXP '^[0-9]+(\.[0-9]+)*(- [A-Za-z]+)?$' THEN '是代码' ELSE '非代码' END AS 识别结果 FROM 你的数据表;
内容的提问来源于stack exchange,提问作者arpitprakash
相关产品推荐
相关产品推荐

