如何用Excel公式(非VBA)按指定规则编码字符串?
用Excel公式实现自定义字符串编码(无需VBA)
当然可以实现,以下是针对不同Excel版本的具体方案:
适用于Excel 365/2021(支持动态数组)
假设目标字符串在单元格A1中,使用以下公式即可直接得到编码结果:
=TEXTJOIN("",,MATCH(MID(A1,SEQUENCE(LEN(A1)),1),UNIQUE(MID(A1,SEQUENCE(LEN(A1)),1)),0))
公式拆解:
MID(A1,SEQUENCE(LEN(A1)),1):将A1中的字符串拆分为单个字符组成的数组UNIQUE(...):按字符出现的先后顺序提取唯一字符集合MATCH(...):获取每个字符在唯一集合中的位置,这个位置就是对应的编码数字TEXTJOIN("",,...):将所有编码数字拼接成最终的字符串
验证示例:
- 当
A1为ABCDEAC时,公式输出1234513,符合要求 - 当
A1为CDABAEB时,公式输出1234354,与示例一致
适用于旧版Excel(不支持动态数组)
如果你的Excel版本不支持动态数组,可使用以下数组公式(输入时需按Ctrl+Shift+Enter确认):
=TEXTJOIN("",,MATCH(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),INDEX(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),MATCH(0,COUNTIF(INDIRECT("R1C1:R"&ROW(INDIRECT("1:"&LEN(A1)))-1&"C1",FALSE),MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)),0)),0))
核心逻辑:
用INDEX+MATCH+COUNTIF组合模拟动态数组中UNIQUE的功能,按顺序提取首次出现的唯一字符,后续步骤与新版公式一致。
内容的提问来源于stack exchange,提问作者AN Đỗ
相关产品推荐
相关产品推荐

