在本教程中,我们将研究几种方法来查找和替换多个单词,字符串或单个角色,因此您可以选择最适合您需求的单词。
人们通常如何在Excel中搜索?通常,通过使用查找和替换功能,该功能适用于单个值。但是,如果您有数十个甚至数百个物品要替换怎么办?当然,没有人愿意一对一手动进行所有这些替换,然后在数据更改时再次进行。幸运的是,有一些更有效的方法可以在Excel中进行质量替换,我们将详细调查它们。
用嵌套替换查找并替换多个值
在Excel中查找和替换多个条目的最简单方法是使用替代功能。
公式的逻辑非常简单:您编写一些单独的函数将旧值替换为新值。然后,您将这些功能嵌套在另一个功能中,以便每个后续替代品都使用上一个替代的输出来寻找下一个值。
替代(替代(替代( text , old_text1 , new_text1 ), old_text2 , new_text2 ), old_text3 , new_text3 )在A2:A10的位置列表中,假设您想用全名替换缩写的国家名称(例如FR , UK和USA )。
要完成它,请在D2:D4中输入旧值以及E2:E4中的新值,如下屏幕截图所示。然后,将以下公式放入B2中,然后按Enter:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2:A10, D2, E2), D3, E3), D4, E4)
…您将立即完成所有替代品:
请注意,上述方法仅在支持动态数组的Excel 365中起作用。
在Excel 2019,Excel 2016和更早的动态版本中,需要为最上方的细胞(B2)编写该公式,然后复制到以下细胞中:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, $D$2, $E$2), $D$3, $E$3), $D$4, $E$4)
请注意,在这种情况下,我们将使用绝对单元格引用锁定替换值,因此它们在将公式放下时不会移动。
笔记。替代函数对大小写敏感,这意味着您应该在与原始数据中显示的同一字母案例中键入旧值( old_text )。
尽管可能很容易,但此方法具有很大的缺点 - 当您有数十个要替换的项目时,嵌套功能变得很难管理。
优点:易于实现;在所有Excel版本中支持
缺点:最好用于有限数量的查找/替换值
用Xlookup搜索并替换多个条目
在您希望替换整个单元格内容而不是其部分时,Xlookup功能派上用场。
假设您有A列中的国家 /地区列表,目的是用相应的全名代替所有缩写。与上一个示例一样,您从在单独的列中输入“查找”和“替换”项目(分别为d和e),然后在B2中输入此公式:
=XLOOKUP(A2, $D$2:$D$4, $E$2:$E$4, A2)
从Excel语言翻译成人类语言,这是公式的作用:
在D2:D4(Lookup_array)中搜索A2值(Lookup_value),然后从E2:E4(return_array)返回匹配项。如果找不到,请从A2中摘取原始值。
双击填充手柄以将公式复制到以下单元格中,结果不会让您等待:
由于Xlookup功能仅在Excel 365中可用,因此上述公式在较早版本中无法使用。但是,您可以通过IFERROR或IFNA和VLOOKUP的组合轻松模仿这种行为:
=IFNA(VLOOKUP(A2, $D$2:$E$4, 2, FALSE), A2)
笔记。与替代品不同,Xlookup和Vlookup功能不是对大小写的敏感性,这意味着他们搜索忽略字母情况的查找值。例如,我们的公式将用法国代替FR和FR 。
优点:不寻常的使用通常功能;在所有Excel版本中使用
缺点:在单元格级别上工作,无法替换部分单元内容
使用递归lambda功能多次替换
对于Microsoft 365订户,Excel提供了一个特殊的功能,该功能允许使用传统公式语言创建自定义功能。是的,我说的是Lambda。这种方法的优点在于,它可以将非常冗长且复杂的公式转换为非常紧凑且简单的公式。此外,它使您可以创建自己不存在Excel中的功能,这仅在VBA中才可能。
有关创建和使用自定义Lambda功能的详细信息,请查看本教程:如何在Excel中编写lambda函数。在这里,我们将讨论几个实际示例。
优点:结果是一种优雅且令人惊讶的功能,无论替换对数量多少
缺点:仅在Excel 365中可用;特定于工作簿,不能在不同的工作簿中重复使用
示例1。一次搜索并替换多个单词 /字符串
为了一次替换多个单词或文本,我们创建了一个自定义的lambda函数,名为MultirePlace ,可以采用以下形式之一:
=LAMBDA(text, old, new, IF(old"", MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0)), text))
或者
=LAMBDA(text, old, new, IF(old="", text, MultiReplace(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))))
两者都是自称的递归功能。区别仅在于如何建立出口点。
在第一个公式中,IF函数检查旧列表是否不是空白(旧“”)。如果为true,则调用多隔板函数。如果false,该函数将其当前形式和退出返回文本。
第二公式使用反向逻辑:如果旧的是空白(old =“”),则返回文本和退出;否则请致电MultirePlace 。
最棘手的部分是完成的!您要做的就是在名称管理器中命名多隔板函数,如下面的屏幕截图所示。有关详细指南,请查看如何命名lambda功能。
功能获得名称后,您可以像其他任何内置功能一样使用它。
从最终用户的角度来看,您选择的两个公式变化中的哪个,语法都一样简单:
Multireplace(文本,旧,新)在哪里:
- 文本- 源数据
- 旧- 找到的价值观
- 新- 替换为
以先前的例子为例,让我们不仅取代国家的缩写,还要取代国家的缩写。为此,在d2开始键入D列中的缩写(旧值),在E2中开始E列E中的全名(新值)。
在B2中,输入多台词函数:
=MultiReplace(A2:A10, D2, E2)
点击Enter并享受结果:)
该公式如何工作
理解该公式的线索是理解递归。这听起来可能很复杂,但是原理很简单。在每次迭代中,递归函数解决了一个更大问题的一个小实例。在我们的情况下,多隔板函数通过旧值和新值循环,并且每个循环都执行一个替代:
多动(SUBSTITUTE(text, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0))
与嵌套替代功能一样,先前替代的结果成为下一个替代的文本参数。换句话说,在每个随后的呼叫中,替代功能不是原始文本字符串,而是上一个呼叫的输出。
要处理旧列表中的所有项目,我们从最上方的单元格开始,并使用偏移函数在每次交互时向下移动1行:
OFFSET(old, 1, 0)
新列表也是如此:
OFFSET(new, 1, 0)
关键的事情是提供一个退出点,以防止递归电话永远进行。它是在IF函数的帮助下完成的 - 如果旧单元格为空,则该函数将其返回文本其当前形式并退出:
=LAMBDA(text, old, new, IF(old="", text, MultiReplace(…)))
或者
=LAMBDA(text, old, new, IF(old"", MultiReplace(…), text))
示例2。在Excel中替换多个字符
原则上,前一个示例中讨论的多隔板函数也可以处理单个字符,前提是每个旧字符都在单独的单元格中输入,就像上面的屏幕截图中的缩写和完整名称一样。
如果您想在一个单元格中输入旧字符和另一个单元格中的新字符,或者将它们直接在公式中键入,则可以通过使用以下公式之一创建另一个名为替代的自定义函数:
=LAMBDA(text, old_chars, new_chars, IF(old_chars"", ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1)), text))
或者
=LAMBDA(text, old_chars, new_chars, IF(old_chars="", text, ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))))
请记住,以往常为名将您的新lambda函数命名:
并且您的新自定义功能已准备就绪:
替换(文本,old_chars,new_chars)在哪里:
- 文字- 原始字符串
- 旧- 要搜索的角色
- 新的- 字符要替换为
为了进行现场测试,让我们做一些经常在导入的数据上执行的事情 - 用直引号和直接撇号替换智能报价和智能撇号。
首先,我们在E2中输入智能引号和智能撇号,直接引号和直撇号,将字符的空间分开,以获得更好的可读性。 (当我们在两个单元格中使用相同的定界符时,它不会对结果产生任何影响 - excel只会用一个空间代替一个空间。)
之后,我们在B2中输入此公式:
=ReplaceChars(A2:A4, D2, E2)
并准确获取我们正在寻找的结果:
也可以直接在公式中键入字符。在我们的情况下,只记得“复制”这样的直言:
=ReplaceChars(A2:A4, "“ ” '", """ "" '")
该公式如何工作
替代方案的功能通过旧_chars和new_chars字符串循环,并从左侧的第一个字符开始一次替换。该部分由替代功能完成:
SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars))
在每次迭代中,右功能都从旧_chars和new_chars字符串的左侧剥离一个字符,因此左侧可以拿出下一个字符以替换:
ReplaceChars(SUBSTITUTE(text, LEFT(old_chars), LEFT(new_chars)), RIGHT(old_chars, LEN(old_chars)-1), RIGHT(new_chars, LEN(new_chars)-1))
在每个递归调用之前,IF函数评估old_chars字符串。如果不是空的,则该函数会自动调用。一旦取代了最后一个字符,迭代过程就完成了,该公式将返回文本其当前形式和退出。
笔记。由于我们的核心公式中使用的替代功能对病例敏感,因此lambdas(多部和替换)都将大写和小写字母视为不同的字符。
群众查找并用UDF替换
如果您的Excel中没有Lambda功能,则可以使用VBA以传统方式编写用户定义的功能。
为了将UDF与lambda定义的多隔板功能区分开,我们将以不同的命名,例如MassReplace 。该函数的代码如下:
像Lambda定义的功能一样,UDF在范围内。这意味着只有在您插入代码的工作簿中, MassReplace功能才能使用。如果您不确定如何正确执行此操作,请按照如何在Excel中插入VBA代码中所述的步骤。
一旦将代码添加到您的工作簿中,该函数将出现在公式IntelliSense中 - 仅函数的名称,而不是参数!不过,我相信记住语法没什么大不了的:
massReplace(input_range,find_range,replace_range)在哪里:
- input_range-要替换值的源范围。
- find_range-字符,字符串或单词要搜索。
- replace_range-字符,字符串或单词要替换为。
在Excel 365中,由于支持动态阵列,这是正常公式的作用,仅需要输入顶部单元格(B2):
=MassReplace(A2:A10, D2:D4, E2:E4)
在预先动态的excel中,这是一个老式的CSE数组公式:您选择整个源范围(b2:b10),键入公式,然后按CTRL Shift同时输入键以完成它。
优点:Excel 2019,Excel 2016和更早版本的自定义Lambda功能的不错的替代品
缺点:必须将工作簿保存为宏启用.xlsm文件
散装用VBA宏代替Excel
如果您喜欢使用宏自动化常见任务,则可以使用以下VBA代码在范围内查找和替换多个值。
要立即使用宏,您可以下载包含代码的示例工作簿。或者,您可以在自己的工作簿中插入代码。
如何使用宏
在运行宏之前,将旧值和新值键入两个相邻列,如下图所示(C2:D4)。
然后,选择您的源数据,按Alt F8 ,选择Bulkreplace宏,然后单击“运行” 。
当源愤怒被预选时,只需验证参考,然后单击“确定:
之后,选择替换范围,然后单击确定:
完毕!
优点:设置一次,随时重复使用
缺点:每个数据都需要运行宏
用substring工具中的多个查找并替换Excel
在第一个示例中,我提到嵌套替代是替换Excel中多个值的最简单方法。我承认我错了。我们的终极套房使事情变得更加容易!
要在工作表中进行质量替换,请转到“ ablebits数据”选项卡,然后单击子字符串工具>替换子字符串。
“替换子字”对话框将出现,要求您定义源范围和子字符串范围。
选择两个范围,单击“替换”按钮,然后在原始数据右侧插入的新列中找到结果。是的,很容易!
提示。在单击替换之前,您需要考虑的一件重要的事情 -对案例敏感的框。如果您想处理大写和小写字母作为不同的字符,请务必选择它。在此示例中,我们会打勾此选项,因为我们只想替换大写字母,并在完整的词中留下诸如“ fr”,“ uk”或“ ak”之类的子字符串。
如果您想知道在字符串上可以执行哪些其他批量操作,请查看我们的Ultimate Suite中包含的其他子字符串工具。甚至更好,请在下面下载评估版本,然后尝试一下!
这就是如何在Excel中一次找到和替换多个单词和字符的方法。我感谢您阅读,并希望下周在我们的博客上见到您!
可用下载
多个查找并替换在Excel(.xlsm File)Ultimate Suite 14天完全功能版本(.EXE文件)中
以上是Excel:一次查找并替换多个值的详细内容。更多信息请关注PHP中文网其他相关文章!

Google主张Countif:综合指南 本指南探讨了Google表中的多功能Countif函数,展示了其超出简单单元格计数的应用程序。 我们将介绍从精确和部分比赛到Han的各种情况

本教程提供了共享Excel工作簿,涵盖各种方法,访问控制和冲突解决方案的综合指南。 现代Excel版本(2010年,2013年,2016年及以后)简化了协作编辑,消除了M的需求

本教程探讨了将.xls文件转换为.jpg映像的各种方法,包括内置的Windows工具和免费的在线转换器。 需要创建演示文稿,安全共享电子表格数据或设计文档吗?转换哟

本教程阐明了Excel名称的功能,并演示了如何定义单元格,范围,常数或公式的名称。 它还涵盖编辑,过滤和删除定义的名称。 Excel名称虽然非常有用,但通常是泛滥的

本教程阐明了平均值的标准偏差和标准误差之间的区别,指导您掌握标准偏差计算的最佳Excel函数。 在描述性统计中,平均值和标准偏差为interinsi

该Excel教程演示了如何计算正方根和n根。 找到平方根是常见的数学操作,Excel提供了几种方法。 计算Excel中正方根的方法: 使用SQRT函数:

解锁Google表的力量:初学者指南 本教程介绍了Google Sheets的基础,这是MS Excel的强大而多才多艺的替代品。 了解如何轻松管理电子表格,利用关键功能并协作


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

Atom编辑器mac版下载
最流行的的开源编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3汉化版
中文版,非常好用

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。