zanezed 发表于 2023-11-30 09:12

求助Excel里的文本替换

总体有点像报文的加密解密。我知道如果用py的循环去写可能很简单,但是目前就希望通过excel的函数公式实现,不使用第三方插件,不使用VBA。

假设A列为原始数据,A1单元格中有一串文本(数字、符号、中文):
A3d56&#2梁0f4%Fxc
A1单元格文本的长短位数不固定

我想用 固定的字典对照表 替换 这串文本:
比如 A 替换成 埃,3 替换成 叁,& 替换成 Δ,梁 替换成 L,等等

字典大概有200个关键字及其对应的对照文字。
字典中没有对应对照的,保留原始字符。

由于要替换的关键字比较多,写在一个公式里太麻烦的话,可以把字典对照表集中放在Sheet2!A:B里。

我自己用Vlookup写了一下,发现写完之后的excel竟然达到5MB。
我猜想高手是否能用数组形式实现这个功能。
谢谢大家指教!

JieW_L 发表于 2023-11-30 09:44

用 vba 感觉可以缩减体积

一蟲先生一 发表于 2023-11-30 09:56

不用插件,不用VB,除了 xlookup和vlookup,没啥好方法

DingVi 发表于 2023-11-30 10:16

你可以去问问New Bing有啥好办法,这是我用你的问题问的回答:

你可以使用 SUBSTITUTE 函数嵌套的方法来实现批量替换文本。假设你的字典对照表在 Sheet2!A:B 中,A 列是原始字符,B 列是替换后的字符,你可以在 B1 单元格输入以下公式:

=SUBSTITUTE (SUBSTITUTE (SUBSTITUTE (A1,Sheet2!A2,Sheet2!B2),Sheet2!A3,Sheet2!B3),Sheet2!A4,Sheet2!B4)

这个公式会先用 Sheet2!B2 中的字符替换 A1 中的 Sheet2!A2 中的字符,然后用 Sheet2!B3 中的字符替换替换后的文本中的 Sheet2!A3 中的字符,以此类推。你可以根据你的字典对照表的长度,增加或减少 SUBSTITUTE 函数的嵌套层数。

ohte 发表于 2023-11-30 10:45

可以用SUBSTITUTE(A3,B$1,B$2)公式替换200次,替换的单元格分组隐藏
文件不大,参考链接: https://pan.baidu.com/s/1Hw3jUiWRgUqQzrlIpC1gkg 提取码: sv5i

cxx0515 发表于 2023-11-30 11:21

你就不怕你的报文和字典冲突吗?

tl;dr 发表于 2023-11-30 12:29

jyjjf 发表于 2023-11-30 13:27

麻烦,好像VLOOKUP查找值不支持数组

紫藤,飘零叶 发表于 2023-11-30 14:11

用lamda函数写

jyjjf 发表于 2023-11-30 14:21

写了一个数组公式,默认sheet1的A1是待替换的数据,sheet2的A列和B列分别对应查找值及对应字典值
=CONCAT(IFERROR(INDIRECT("Sheet2!B"&MATCH(MID($A$1,ROW(INDIRECT("1:"&LEN($A$1))),1),Sheet2!A1:A3,0)),MID($A$1,ROW(INDIRECT("1:"&LEN($A$1))),1)))
页: [1] 2 3
查看完整版本: 求助Excel里的文本替换