VBA 从列表表 Excel 中删除字符串自定义称呼名称

问题描述 投票:0回答:1

我有带有称呼的字符串名称

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
与该列表称呼

excel vba list
1个回答
0
投票

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
)。

© www.soinside.com 2019 - 2024. All rights reserved.