Я хотел знать, есть ли способ извлечь строку из строки, указав начало нескольких символов и символ конца.Извлечь подстроку в строке, указав первую и последнюю подстроку
В качестве примера у меня есть строка, подобная нижней части вопроса в ячейке моей книги, и каждая ячейка имеет подобную большую строку. Я хотел бы извлечь все имя в массив.
«c1-mc-» всегда будет префикс имени. Я надеялся, что могу использовать функцию, в которой я мог бы указать, что для каждой подстроки, начинающейся с «c1-mc» и заканчивая vbLf (enter), извлеките их. Я думаю, что Instr() и Split() могут помочь, но не уверены, как действовать дальше.
"Str: 1/2/1
End : 1/2/2
Name: cl-mc-23223322
Name: c1-mc-dddssda
Info: alot of detail
Name: c1-asa-dddssda
task: asdf
Name: c1-mc-xd132eds"
<the code which works>
For Each rng1 In table1.DataBodyRange.Columns(8).Cells
MyString = rng1.Value
Do Until InStr(MyString, "c1-mc") = 0
namestart = InStr(MyString, "c1-mc")
name = Mid(MyString, namestart)
nameend = InStr(name, vbLf) - 1
name = Left(name, nameend) 'this gives you a name
namestart = InStr(name, "c1-mc")
name = Mid(name, namestart)
nameend = InStr(name, " ") - 1
If (nameend = -1) Then
nameend = Len(name)
End If
name = Left(name, nameend) ' gives you name incase there are no next lines
MyString = Replace(MyString, name, "") 'this cuts the original string so it now starts where the name ended.
MsgBox name
i = i + 1
Loop
Next
Если вы делаете много этого, вы можете найти, глядя на регулярные выражения в VBA использования. Он позволяет использовать все виды нарезки и нарезки строки на основе критериев. Это [отличный пост] (http://stackoverflow.com/questions/22542834/how-to-use-regular-expressions-regex-in-microsoft-excel-both-in-cell-and-loops) на тема. –
Строка, которую вы показываете мне: «Str: 1/2/1End: 1/2/2Name: cl-mc-23223322Name: c1-mc-dddssdaInfo: alot of detailName: c1-asa-dddssdatask: asdfName: c1 -mc-xd132eds «В строке нет« вводится ». Возможно, вы имеете в виду «Str: 1/2/1» и vbLF & «End: 1/2/2» & vbLF & «Имя: cl-mc-23223322» & vbLF ... –
@Byron благодарит за ссылку. –