如何在Excel Power Query中提取街道地址中的方位词?
从地址列提取NE/NW/SE/SW方位词的Power Query解决方案
原公式错误原因
你的公式报错主要有三个问题:
List.ContainsAny([Address], {"NE", ...})用法错误:List.ContainsAny要求第一个参数是列表,但你直接传入了地址文本Text.Select只能提取单个字符,无法识别"NE"这类双字符的方位词List.Select同样需要第一个参数是列表,直接用文本不符合语法要求
正确实现方法
方法1:拆分地址为单词列表后筛选
这种方法适合方位词以独立单词存在的地址格式,逻辑直观:
- 把地址按空格拆成单词列表
- 筛选出属于目标方位词的项
- 返回匹配到的第一个方位词(无匹配则返回null)
自定义列公式:
= let addressWords = Text.Split([Address], " "), targetDirections = {"NE", "NW", "SE", "SW"}, matchedItems = List.Select(addressWords, (word) => List.Contains(targetDirections, word)) in if List.Count(matchedItems) > 0 then matchedItems{0} else null
方法2:正则表达式匹配(更灵活高效)
如果遇到方位词可能和其他字符紧邻的极端情况(比如"NE123",不过大部分场景是独立单词),用正则可以精准匹配独立的方位词:
自定义列公式:
= let regexPattern = "\b(NE|NW|SE|SW)\b", matchedResult = Text.RegexMatch([Address], regexPattern) in if matchedResult <> null then matchedResult{0} else null
\b表示单词边界,确保不会误匹配类似"NEXT"里的"NE"(NE|NW|SE|SW)指定要匹配的四个方位词
内容的提问来源于stack exchange,提问作者Gregory Gene Conrad
相关产品推荐
相关产品推荐

