ЗАМЕНИТЕ подвиг. SEARCHREV
В VBE
SEARCHREV
- это пользовательская функция (UDF), которая будет выполнять те же действия, что и SEARCH
(без учета регистра, т.е. AA=Aa=aa
), за исключением конца строки.
Скопируйте код на стандартный модуль (в VBE перейдите на Insert>>Module
).
'*******************************************************************************
' Purpose: Returns the position of the last occurence of
' a case-INsensitive string within a string. Read only. Long.
' Inputs:
' UseString Required. String expression being searched.
' SearchString Required. String expression being searched for.
' RightPosition Optional. Numeric expression that sets the starting position
' for each search. If omitted, –1 is used i.e. the search
' begins at the last character position.
' If start contains Null, an error occurs.
'*******************************************************************************
Function SEARCHREV(UseString As String, SearchString As String, _
Optional RightPosition As Long = -1) As Long
Application.Volatile
SearchREV = InStrRev(UseString, SearchString, RightPosition, vbTextCompare)
End Function
'*******************************************************************************
В Excel
Ваш вопрос можно переформулировать так:
Заменить последнее вхождение буквы P на подчеркивание (_)
и применять заглавные (заглавные) буквы к строке.
Положение последнего вхождения буквы P легко найти с помощью функции SEARCHREV
: =SEARCHREV(A1,"P")
. Это именно то, что нужно функции REPLACE
в качестве второго параметра: =REPLACE(A1,SEARCHREV(A1,"P"),1,"_")
. Теперь мы применяем прописные буквы: =UPPER(REPLACE(A1,SEARCHREV(A1,"P"),1,"_"))
. Если P не найден, SEARCHREV
вернет 0, что приведет к ошибке REPLACE
. Поэтому мы должны обработать его в операторе IF
перед тем, как запустить остальные =IF(SEARCHREV(A1,"P")=0;"";...
Если данные начинаются с A1
, вставьте следующую формулу в B1
.
=IF(SEARCHREV(A1,"P")=0,"",UPPER(REPLACE(A1,SEARCHREV(A1,"P"),1,"_")))
