【发布时间】:2020-06-23 22:03:53
【问题描述】:
我继承了一个 Excel 宏,用于我公司的银行存款。我能够逐行阅读并弄清楚宏是如何工作的。
32 位 Excel 抛出的 Cells.Replace 函数太多了
“编译错误:过程太大”。
我需要瘦下来。例如:
Cells.Replace What:="DIRECT DEPOSIT COMPANY A OF CALIFORNIA", Replacement:="COMPANY", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="DIRECT DEPOSIT COMPANY A UTAH SECTOR", Replacement:="COMPANY", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
两者都来自同一家公司,后来也被这样对待,但由于它们的名称略有不同,我一直在为每个人添加一个新功能。
我假设因为它使用的是“LookAt:=xlPart”,所以我可以说:
Cells.Replace What:="DIRECT DEPOSIT COMPANY", Replacement:="COMPANY", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
但我最终得到了“公司”,+ 后面附加了 What 函数中指定的所有内容。
是否有更简化的方法来查找以“DIRECT DEPOSIT COMPANY A”开头的所有单元格,忽略之后的任何内容,并仅替换为“COMPANY”?
【问题讨论】:
-
这将有助于展示一些“之前”和“之后”的示例,以便清楚您想要什么作为预期结果。如果您收到“程序太大”,这表明您的 Sub 需要完全重写:考虑将“查找”和“替换为”文本移动到工作表,然后让代码逐行读取该工作表并为每对值运行替换。