我想在Excel查找和替换对话框中使用通配符,以使用模式匹配替换单元格。编写示例列:
_4
_44
_13
...
我想用以下代码替换这些值:
(4)
(44)
(13)
...
所以我尝试使用_*
它成功找到模式,但如果Excel功能匹配占位符,我找不到任何地方。例如,使用正则表达式,我会使用括号和\1
匹配占位符。Excel有这个功能吗?
我想在Excel查找和替换对话框中使用通配符,以使用模式匹配替换单元格。编写示例列:
_4
_44
_13
...
我想用以下代码替换这些值:
(4)
(44)
(13)
...
所以我尝试使用_*
它成功找到模式,但如果Excel功能匹配占位符,我找不到任何地方。例如,使用正则表达式,我会使用括号和\1
匹配占位符。Excel有这个功能吗?
Answers:
Excel的模式匹配功能非常有限:文字字符,*匹配任意数量的未指定字符,以及?匹配单个未指定的字符。在工作表函数或VBA中没有本机匹配占位符功能。
但是,正如Excellll所指出的,您可以在VBA中使用正则表达式,并且可以开发基于正则表达式的用户定义函数。
要在代码中访问正则表达式,请通过Visual Basic代码编辑器主菜单中的Tools
- > References
选项添加对“Microsoft VBScript Regular Expression 5.5”库的引用。
我还没有找到任何关于图书馆的综合文档,但你可以通过Google搜索找到很多零碎的东西 - 以及示例代码。
虽然这是一个非常晚的答案,但我已成功使用一个名为RegEx Find / Replace的加载项来完成您想要的操作。但我不知道在Excel中有任何内置功能。
该加载项在功能区上创建一个按钮,该按钮启动一个看起来非常像Excel查找/替换的对话框。它的大部分工作原理相同 - 您可以在工作表或工作簿中,按列或行,匹配大小写等进行搜索(但是,没有格式匹配。)
但请注意,加载项使用VBScript中实现的正则表达式,因此与标准Excel查找/替换的工作方式不同。例如,您的搜索字符串_*
不起作用。它匹配任何具有零或更多下划线的单元格,这是任何东西。就你的例子而言,我成功地找到_(\d+)
并替换了'($1)
。(撇号只是为了防止Excel将其解释(4)
为负值。)
我与网站或开发者没有任何关系 - 只是通过网络搜索找到它。此外,我使用Excel 2007,并不能说这是否仍然适用于更高版本。我在Windows 7和Windows 10中都成功使用过它。
在正则表达式查找/替换插件可以在这里找到http://www.codedawn.com/excel-add-ins.php