Есть вот такие строчки. каждая располагется в одной ячейке StudyCharacteristics[V03]\ClinicalStudy[V03.175]\ObservationalStudy,Veterinary[V03.175.750] StudyCharacteristics[V03]\ComparativeStudy[V03.250] StudyCharacteristics[V03]\ConsensusDevelopmentConference[V03.300]\ConsensusDevelopmentConference,NIH[V03.300.300] StudyCharacteristics[V03]\EvaluationStudy[V03.400]
Задача:
забрать последнее значение, например, ObservationalStudy,Veterinary[V03.175.750] но нужно избавить это текст от этого [V03.175.750] и поместить оставшееся это в ObservationalStudy,Veterinary отдельную ячеку требуемого столбца.
Среднее по длине, но быстрее чем конкуренты. =TRIM(LEFT(SUBSTITUTE(TRIM(RIGHT(SUBSTITUTE(C1;"";REPT(" ";LEN(C1)));LEN(C1)));"[";REPT(" ";LEN(C1)));LEN(C1)))
Function RegexExecute(str As String)
Dim newStr As String
newStr = StrReverse(str)
With CreateObject("VBScript.Regexp")
.Global = False
.MultiLine = True
.IgnoreCase = True
.Pattern = "(?:\[).+?(?=\\)"
RegexExecute = StrReverse(Right(.Execute(newStr)(0), Len(.Execute(newStr)(0)) - 1))
End With
End Function
Function iPart(cell$)
Dim mo As Object
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "[^\\]+"
If .test(cell) Then
Set mo = .Execute(cell)
iPart = mo(mo.Count - 1)
.Pattern = "\[.+\]"
iPart = .Replace(iPart, "")
Else
iPart = ""
End If
End With
End Function
Function LastBloc$(s$)
Dim re, m
Set re = CreateObject("VBScript.RegExp"): re.Pattern = "\\([^[]+)"
If re.test(s) Then _
re.Global = True: Set m = re.Execute(s): LastBloc = m(m.Count - 1).submatches(0)
End Function
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!