在Excel中查找和删除单元格内的文本

时间:2016-09-22 16:39:04

标签: excel vba excel-vba

我在单元格A1中粘贴了可能如下所示的文字:

“Vanguard - Total Market - Composite”或“Vanguard - Total Market - Commingled”

我想切断“ - Composite”或“ - Commingled”并将其余部分返回到单元格B1中。目前我在B1中使用这个公式:

= LEFT(A1,FIND(“ - Composite”,A1)-1)

然而,我无法弄清楚如何寻找多个术语(即复合或混合)。有没有一个公式可以做到这一点?如果没有,我怎么能在VBA中做到这一点?

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

如果我理解正确,你只是想在第二次出现-之后去掉所有内容,即返回第一个-字符左边的修剪过的(额外的空白)。调整this solution以找到字符串中的最后一个单词,这就是:

=TRIM(SUBSTITUTE(LEFT(A1,LEN(A1)-LEN(MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"-",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1,"-",""))))+1,LEN(A1)))),"-","",2))

此公式可以使用或不使用-周围的空格,无论如何:

formula in action

如果偶数间距很重要,您可以使用SUBSTITUTE函数包装它:

=SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(LEFT(A1,LEN(A1)-LEN(MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"-",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1,"-",""))))+1,LEN(A1)))),"-","",2)),"-"," - "),"  "," ")

现在,您可以为所有情况提供干净,格式相同的输出:

even spacing

答案 1 :(得分:1)

我已经制作了这个公式,只要您填写可能性范围,就可以使用多种可能性,而不需要在有新公式时更改公式。这是:

=LEFT(A2,FIND(INDIRECT(ADDRESS(SUMPRODUCT((--ISNUMBER(SEARCH(Possibilities,A2)))*ROW(Possibilities)),SUMPRODUCT((--ISNUMBER(SEARCH(Possibilities,A2)))*COLUMN(Possibilities)))),A2)-1)

enter image description here

答案 2 :(得分:1)

您可以使用SUBSTITUTE函数and chain multiple calls

=SUBSTITUTE(SUBSTITUTE(A1," - Composite", ""), " - Commingled", "")