如何在Excel 2019中无需VBA实现基于表格的子字符串替换
Excel 2019无VBA批量替换子字符串方案
针对你需要根据映射表替换table1中TEXT列子字符串的需求,可通过数组公式+TEXTJOIN函数实现,无需VBA,具体步骤如下:
公式实现
假设:
- table1的TEXT列数据在
C2:C4(对应示例中的ABCDEFGHIJ等内容) - table2为结构化表格,旧值列是
Table2[OLD VALUE],新值列是Table2[NEW VALUE]
在table1的NEW TEXT列第一个单元格(如D2)输入以下公式,然后按Ctrl+Shift+Enter(数组公式必须用这个组合键确认):
=TEXTJOIN("",TRUE,IFERROR(INDEX(Table2[NEW VALUE],MATCH(MID(C2,ROW(INDIRECT("1:"&LEN(C2))),1),Table2[OLD VALUE],0)),MID(C2,ROW(INDIRECT("1:"&LEN(C2))),1)))
输入完成后,下拉填充公式到其他行即可自动生成替换后的NEW TEXT内容。
公式拆解
LEN(C2):获取当前TEXT单元格的字符总长度ROW(INDIRECT("1:"&LEN(C2))):生成1到字符长度的序列,用于逐个提取TEXT中的每个字符MID(C2,ROW(...),1):依次提取TEXT中的每一个单独字符MATCH(...,Table2[OLD VALUE],0):在映射表的旧值列中查找当前字符,返回匹配位置INDEX(Table2[NEW VALUE],...):根据匹配位置取出对应的新替换值IFERROR(...,MID(...)):若字符不在映射表中,直接保留原字符TEXTJOIN("",TRUE,...):将所有替换后的字符/字符串拼接成完整的结果
注意事项
- 若未使用结构化表格,需将公式中的
Table2[OLD VALUE]和Table2[NEW VALUE]替换为普通单元格的绝对引用,例如$A$2:$A$7和$B$2:$B$7(需对应你的映射表实际范围) - Excel 2019不支持动态数组,因此必须通过Ctrl+Shift+Enter触发数组计算,普通回车会导致公式无效
- 确保映射表的
OLD VALUE列无重复值,否则MATCH会返回第一个匹配项的结果
内容的提问来源于stack exchange,提问作者ouboma
相关产品推荐
相关产品推荐

