2016-04-27 53 views
2

我在“Dr.”,“Prof.”列中有一组名称,作为前缀。我需要删除这些前缀并仅保留名称。如何在excel 2013单元中删除某些字符

**Column A** **Required only names in column B** Prof.Dr.med.nameX Dr.med.nameXX Prof. name XXX Dr. XX Pr.XX

+0

我有一个列表需要从列中删除的前缀 – SSP

+0

前缀列表如何看起来像?你会有一个条目“Prof.Dr.med”吗?或“教授”和“博士”和“med。”作为单独的条目? – zaptask

+0

我不完全理解你的问题。你能显示数据的图像吗? – Brian

回答

1

也许这:

=RIGHT(A1,LEN(A1)-FIND(".",A1)) 

未测试!

2

假设我们在列A列出了一个名字。首先,我们列出了不必要的垃圾在C列B1我们进入:

=TRIM(SUBSTITUTE(A1,INDEX($C$1:$C$6,SUMPRODUCT(ROW($C$1:$C$6)*ISNUMBER(SEARCH($C$1:$C$6,A1)))),"")) 

抄下:

enter image description here

Mike H. answer

+0

只有当您的垃圾清单中只有一个字出现时,此功能才有效。如果你有例如“琼斯博士教授”,你想删除“教授”和“博士”,它会给你意想不到的结果。 – NiH

+0

@NiH **你是对的!**,它的好处是它可以处理一个大的“垃圾清单” –

+0

同意。它比UDF快得多。所以最好的解决方案将取决于OP的确切需求。 – NiH

1

派生如果你有一个非常短的和固定长度的要删除的子串列表,你可以这样做:

= TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(C1, $A$1, ""), $A$2, ""), $A$3; ""), $A$4, ""), $A$5, "")) 

(在C1中你的原始字符串和子字符串的范围在A1:A5中被删除)。虽然这有些杂乱,但不够灵活。如果你不反对使用VBA,我建议写一个类似的UDF:

Function UDF_MultiSubstitute(text As String, old_text_rng As Range, newText As String) 

    Dim curCell As Range 

    For Each curCell In old_text_rng 
     text = Replace(text, curCell.Value, newText) 
    Next 

    UDF_MultiSubstitute = Trim(text) 

End Function 

然后你就可以调用为:

= UDF_MultiSubstitute(C1, $A$1:$A$5, "") 

Obviuosly,你可能要添加一些错误捕获等vba代码

+0

您的* UDF *方法更加灵活。 –