我有带有称呼的字符串名称
DATIN SERI PADUKA JOHN DOE
,实际名字是JOHN DOE
我有一份优秀的问候语列表:
DATIN SERI
DATIN SERI PADUKA
当前使用 VBA 的替代函数:
For index=2 to totalRow
SalutationArray = Split(ws.Range("A"&index), " ")
For N = 0 to UBound(SalutationArray)
strSalutation = SalutationArray(N)
ws.Range("B" & index) = WorksheetFunction.Substitute(strName,strSalutation,"")
Next index
输出结果为
PADUKA JOHN DOE
前面有空格
如何实现输出结果只是
JOHN DOE
与该列表称呼
1) 要删除前导空格,只需使用函数
Trim
Trim(WorksheetFunction.Substitute(strName,strSalutation,""))
2) 您应该使用本机 VBA 函数
WorksheetFunction.Substitute
,而不是 Replace
。这不仅速度更快,而且还确保代码可以在任何 VBA 环境中运行(例如 Word 或 Powerpoint 的 VBA)。
Trim(Replace(strName, strSalutation, ""))
3) 根据您给出的示例,您可能会得到一个糟糕的惊喜:
查看输入
DATIN SERI PADUKA JOHN DOE
。您的代码开始运行,列表中的第一个条目是 DATIN SERI
。代码将从名称中删除它,留下 PADUKA JOHN DOE
。DATIN SERI PADUKA
。这不再是名称的一部分,因此术语 PADUKA
将保留,最终会得到 PADUKA JOHN DOE
。
更改列表中的顺序(将最长的条目放在顶部),或将另一个条目
PADUKA
添加到列表中(但随后不再需要该条目 DATIN SERI PADUKA
)。