Из текста вычленить последнее значение в скобках с учетом условия
Необходимо сформировать столбец значений для таблицы по исходным значениям другого столбца той же таблицы, содержащего в каждой ячейке значение вида:
1(ADCD);2(EFG);3(HJKLN)
Как мы видим, элементы разделены точкой с запятой ";". Требуется вычленить последний элемент 3(HJKLN) и его значение в скобках HJKLN использовать в ячейке нового столбца. При этом, если последний элемент имеет вид 5(CGHL), то есть за скобками стоит 5, то этот элемент пропускается и берётся предпоследний. Все элементы с пятёрками пропускаются:
Как это сделать в средствами Excel?
Ответы (2 шт):
Автор решения: Akina
→ Ссылка
Function get_last_not_5(source As Range)
get_last_not_5 = ""
If source.Cells.Count > 1 Then
Exit Function
End If
Dim tmp() As String
tmp = Split(source.Value, ";")
Dim i As Integer
For i = UBound(tmp) To LBound(tmp) Step -1
If Left(tmp(i), 1) <> "5" Then
get_last_not_5 = tmp(i)
Exit Function
End If
Next
End Function
Автор решения: vikttur
→ Ссылка
1- Нужное значение можно извлечь формулой листа:
=СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ(ЛЕВБ("kk"&A2;ПОИСК(5;A2&"kk5")-1);"(";ПОВТОР(" ";9));9))
2- Вариант UDF:
Function fExtractVal(sStr As String) As String
Dim j As Long, sTemp As String
sTemp = Split(";" & sStr, ";5")(0)
j = InStrRev(sTemp, "(") + 1
fExtractVal = Replace(Mid$(sTemp, j), ")", "")
End Function
В ячейку:
=fExtractVal(A2)

