You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Excel Power Query移除文本中的不可见Unicode字符?

解决Power Query中含不可见Unicode字符的文本匹配问题

方法一:自定义函数筛选可打印字符(推荐)

编写Power Query自定义函数,保留所有可打印字符(包括带重音的Unicode字符),排除各类不可见控制字符:

let
    RemoveInvisibleChars = (inputText as text) as text =>
        let
            SplitChars = Text.ToList(inputText),
            FilteredChars = List.Select(SplitChars, each 
                let 
                    CharCode = Unicode.FromCharacter(_)
                in
                    // 保留ASCII可打印字符 + 160及以上的非控制类Unicode字符
                    (CharCode >= 32 and CharCode <= 126) 
                    or (CharCode >= 160 and not List.Contains({8236, 8237}, CharCode))
            ),
            Result = Text.Combine(FilteredChars)
        in
            Result
in
    RemoveInvisibleChars

使用时在Power Query中添加自定义列,调用函数处理发票号字段:
CleanedInvoice = RemoveInvisibleChars([Invoice Number])

该函数会自动过滤ASCII控制字符(0-31、127)和你遇到的8236(弹出方向格式符)、8237(左至右覆盖符),同时保留带重音的人名类字符(如é、ñ等)。

方法二:枚举不可见字符批量移除

如果需要更直接的枚举方式,先定义需移除字符的列表,再用Text.Remove批量清理:

// 定义需移除的不可见字符码点,转换为字符列表
InvisibleChars = List.Transform({0..31, 127, 8236, 8237}, Unicode.ToCharacter),
// 清理发票号字段
CleanedInvoiceNumber = Text.Remove([Invoice Number], InvisibleChars)

后续遇到新的不可见字符,只需将对应Unicode码点添加到列表即可,无需逐个手动输入字符。

补充说明

Excel单元格的=运算符会自动忽略部分不可见控制字符,因此看似相同的文本会显示为TRUE;但Power Query严格按照字符的Unicode码点对比,必须手动清理特殊字符才能正常匹配。

内容的提问来源于stack exchange,提问作者Simon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 07:52:49