从Excel中的最后位置删除章程中的下一个子字符串

时间:2017-11-03 06:35:28

标签: excel excel-vba excel-formula vba

我有Excel表格,其中包含类似于

的数据

地址
XYZ,ABC,口腔白斑
OPN,OPK,PRT
我们-YLJ,TYF,uyfas
oiui,ytfy,tydry - 我们也在bla,bla,bla中工作 ytfyt,tyfyt,ghfyt i-hgsd,gsdf-hgd,sdgh, - 我们也在xxx,yy,zzz工作 ytsfgh,gfasdg,tydsfyt

我想删除字符“ - ”旁边的所有子字符串,只要它位于最后一个位置。
结果应该像

XYZ,ABC,OLK
OPN,OPK,PRT
我们-YLJ,TYF,uyfas
oiui,ytfy,tydry
ytfyt,tyfyt,ghfyt i-hgsd,gsdf-hgd,sdgh
ytsfgh,gfasdg,tydsfyt

我尝试使用=替换函数但无法替换数据,因为与“ - ”分隔的最后一个子字符串不相似。

1 个答案:

答案 0 :(得分:1)

根据您的规格,我会使用两列,因此它不是一个很长的公式:

在B1:

=IFERROR(FIND(CHAR(1),SUBSTITUTE(A1,"-",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1,"-",""))))-1,LEN(A1))

这将获取最后-或全文长度的位置。

然后在C1:

=LEFT(A1,IF(FIND(",",A1)<B1,B1,LEN(A1)))

检查上一个,之前是否有-。如果没有,,则会收到全文。

enter image description here

编辑:我现在才注意到您编辑的评论。如果它只是- We之后的所有内容,那么我会使用它:

=TRIM(LEFT(A1,IFERROR(FIND("- We",A1)-2,LEN(A1))))