2016-09-22 69 views
2
小区内删除文字

我已经贴在单元格A1文本可能看起来像这样:查找并在Excel

“先锋 - 总市场 - 复合”,还是“先锋 - 总市场 - 混合”

我想切断“ - 复合”或“混合”并将其余的单元返回到B1单元格。目前我使用这个公式B1:

= LEFT(A1,FIND( “ - 复合”,A1)-1)

但是,我想不出如何寻找多个方面(即复合或混合)。有没有一个公式可以做到这一点?如果没有,我怎么能在VBA中做到这一点?

感谢您的帮助!

+0

将您的数据总是有两个'-'? – Chrismas007

+1

它们总是以“公司 - 指数 - 方法”的形式出现吗? – Comintern

+2

'= SUBSTITUTE(SUBSTITUTE(A1,“ - Composite”,“”),“ - Commingled”,“”)'? – assylias

回答

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

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