Excel 有查找和替换匹配占位符吗?

Excel 有查找和替换匹配占位符吗?

我想在 Excel 查找和替换对话框中使用通配符,以模式匹配的方式替换单元格。示例列如下:

_4
_44
_13
...

我想用以下值替换这些值:

(4)
(44)
(13)
...

因此,我尝试使用_*which 成功找到模式,但我找不到任何地方是否显示 Excel 功能匹配占位符。例如,使用正则表达式时,我会使用括号和\1作为匹配占位符。Excel 有这个功能吗?

答案1

Excel 的模式匹配功能极其有限:文字字符、* 匹配任意数量的未指定字符,以及 ? 匹配单个未指定字符。工作表函数或 VBA 中都没有原生的匹配占位符功能。

但是,正如 Excellll 所指出的,您可以在 VBA 中使用正则表达式,并且可以开发基于正则表达式的用户定义函数。

要在代码中访问正则表达式,请通过Visual Basic 代码编辑器主菜单中的Tools->选择添加对“Microsoft VBScript Regular Expression 5.5”库的引用。References

我没有找到该库的任何全面文档,但你可以通过 Google 搜索找到很多零碎的信息和示例代码。

答案2

虽然这是一个很晚的答案,但我已经成功使用了一个名为RegEx 查找/替换做你想做的事。但我不知道 Excel 中是否有内置的此功能。

该插件会在功能区上创建一个按钮,该按钮会启动一个与 Excel 查找/替换非常相似的对话框。它的大部分功能也相同 - 您可以在工作表或工作簿中按列或行进行搜索,匹配大小写等。(但没有格式匹配。)

但请注意,该插件使用 VBScript 中实现的正则表达式,因此其工作方式与标准 Excel 查找/替换不同。例如,您的搜索字符串_*将不起作用。它匹配任何带有零个或多个下划线的单元格,即任意内容。对于您的示例,我成功找到_(\d+)并替换为'($1)。(撇号只是为了防止 Excel 将其解释(4)为负值。)

我与该网站或开发者没有任何关系 - 只是通过网络搜索找到的。另外,我使用 Excel 2007,无法确定它在更高版本中是否仍然有效。我在 Windows 7 和 Windows 10 中都成功使用过它。

RegEx 查找/替换插件可以在以下位置找到:http://www.codedawn.com/excel-add-ins.php

答案3

将文件扩展名从 .xlsx 重命名为 .zip
解压整个文件
在子文件夹 \xl\worksheets 中找到工作表
在 emacs(或任何其他具有足够功能的 txt 编辑器)中打开文件
更改内容
重新压缩,将 .zip 重命名为 .xlsx
注意:Excel 保留计算依赖项的内部列表,因此如果您的更改涉及对其他单元格的某种引用,则不会重新计算。我通过两步方法解决了这个问题,第二步使用 excel 的替换功能,它将触发正确的内部更新。
听起来很复杂,但实际上只需 5 分钟!

答案4

另一个解决方案是将工作表复制到 Word 中的表格,执行查找和替换,然后将其复制回 Excel。

相关内容