Страницы: 1
RSS
Извлекать нужные слова после определения слов и знаков из текста и клеить с другими
 
Такая задача пробивал из интернета разные варианты, но не получилось, что хотелось нужно помощь. Как извлекать из текста в двух ячеек слова после запетой, еще слова после с знаком "/" и подставить слово “to” между извлеченными словами заранее всем спасибо[
 
Вариант с UDF на основе приложенного примера:
Код
Function fnChoice$(a$, b$)
    Dim s1$, s2$, s3$
    s1 = RegExPRepl(a, "([\S\s]*?)(, )([A-Z]{2})([\S\s]*)", "$3")
    s2 = RegExPRepl(b, "([\S\s]*?)(, )([A-Z]{2})([\S\s]*)", "$3")
    s3 = RegExPRepl(b, "([\S\s]*)(, )([A-Z]{2})([\S\s]*)", "$3")
    fnChoice = s1 & " to " & s2 & " to " & s3
End Function

Function RegExPRepl(sString$, sFind$, sReplace$, Optional bGlobal As Boolean = True, _
Optional bMultiLine As Boolean = True) As String
   Static RegEx As RegExp
   If RegEx Is Nothing Then Set RegEx = New RegExp
   With RegEx
      .Global = bGlobal
      .MultiLine = bMultiLine
      .IgnoreCase = False
      .Pattern = sFind
   End With
   RegExPRepl = RegEx.Replace(sString, sReplace)
End Function
 
как-то такъ:
Код
=ПСТР(A3;ПОИСК(",";A3)+2;2)&" to "&ПСТР(B3;ПОИСК(",";B3)+2;2)&" to "&ПСТР(B3;ПОИСК(",";B3;ПОИСК(",";B3)+1)+2;2)


UPD  aequit, а на регулярках так не проще?
Код
Function fnChoice$(a$, b$)
    t = a & b
    With CreateObject("VBScript.Regexp")
        .Global = True
        .Pattern = "(, )([A-Z]{2})"
        Set e = .Execute(t)
        fnChoice = e(0).SubMatches(1) & " to " & e(1).SubMatches(1) & " to " & e(2).SubMatches(1)
    End With
End Function
Изменено: buchlotnik - 01.12.2020 08:10:44
Соблюдение правил форума не освобождает от модераторского произвола
 

всем спасибо за помощь

Страницы: 1
Наверх