2016-04-27 2 views
2

У меня есть набор имен в столбце «A» с «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». или "Проф." и "Доктор" и "мед.". как отдельные записи? – zaptask

+0

Я не совсем понимаю ваш вопрос. Можете ли вы показать изображение данных? – Brian

ответ

1

Может быть, это:

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

Не тестировался!

2

Скажем, у нас есть список имен в колонке A. Сначала мы перечислим нежелательные в колонке C и в В1 мы вводим:

=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. Поэтому наилучшее решение будет зависеть от точных потребностей ОП. – NiH

1

Если у вас есть очень короткий и фиксированный список подстрок, который вы хотите удалить, вы можете сделать что-то вроде:

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

(с исходной строкой в ​​C1 и диапазоном substringsto для удаления в 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 * намного более гибкий. –

Смежные вопросы