【发布时间】:2016-03-31 04:23:41
【问题描述】:
所以我有一些代码通过名称列表(大多数是每行一个用户名)。一些行有多个名称,由“/”字符(John Doe / Smith Jr / Some Guy)分隔。我使用以下代码(按名称大小写重复)将所有名称修改为正确的 LDAP 名称。
Worksheets(2).Columns("B").Replace _
What:="*smith*", Replacement:="jsmith", _
SearchOrder:=xlByColumns, MatchCase:=False
Worksheets(2).Columns("B").Replace _
What:="*Doe*", Replacement:="jdoe", _
SearchOrder:=xlByColumns, MatchCase:=False
这适用于每个只有一个名称条目的字段。有没有办法指定使用通配符“*”字符删除 John Doe(某些字段可能拼写不正确等),但不修改“/”之后的任何内容。
示例数据
John Doe
Abraham Lincoln / john_doe
doe john
doe john / Obiwan
john doe / jsmith / mark mane
john smith / john doe
john does
预期输出
jdoe
Abraham Lincoln / jdoe
jdoe
jdoe / Obiwan
jdoe / joe smith / mark mane
jsmith / jdoe
jdoe
我收到了什么
jdoe
jdoe
jdoe
jdoe
jdoe
jsmith
jdoe
【问题讨论】:
-
Hi Blue 抱歉,我不完全理解您的问题。目前,您在第 2 列中搜索“Doe”,并将其替换为“jdoe”。现在您要找到“John Doe”并将其删除?
-
@StormsEdge 我添加了一些示例数据,希望能更好地了解我想要完成的工作
-
不,不是没有进行单元迭代。您的通配符正在使用整个字符串,
John Doe / Smith Jr / Some Guy是与*Doe*匹配,Range.Replace方法将用指定的"jdoe"字符串替换该匹配项。 -
@ScottHoltzman 如果 John Doe 是单元格中的第一个条目,则不起作用...
-
@DavidZemens 是的,但我总是可以在行中每个单元格的开头添加一个“/”,运行他给出的命令,然后删除第一个“/”