Я пытаюсь найти символы числового типа в последовательных позициях (не менее 3) в строке.Например, если у меня есть эта строка:
"Lorem ipsum dolor sit amet, consittetur adipiscing elit. Nulla purus dui, lobortis non 54 leo non, feugiat venenatis urna. Morbilobortis ligula tincidunt 1844763 , accumsan massa vel, placerat libero. В нисле в leo lacinia 243 ullamcorper eget id tortor. Cras vehicleula malesuada luctus. Donec egestas non arcu in bland. Donec egestas non arcu in bland.lacinia ipsum и др. mi. Nulla 46626 laoreet viverra purus fringilla pellentesque. Mauris sit amet pulvinar Velit, в dignissim lacus. Меценаты не соллисвитные, например, Fusce luctus enim eff 43 * 101i finit ic. Nam ac 1 fermentum lacus. "
Я хочу, чтобы мой скрипт VBA возвращал это:
1844763
243
46626
Это скрипт, с которым я сейчас работаю:
start = 1
Do
If IsNumeric(Mid(Sheets("Sheet1").Cells(x, 1), start, 1)) Then
If start = Len(Sheets("Sheet1").Cells(x, 1)) Then
Exit Do
End If
If IsNumeric(Mid(Sheets("Sheet1").Cells(x, 1), start + 1, 1)) Then
If start + 1 = Len(Sheets("Sheet1").Cells(x, 1)) Then
Exit Do
End If
If IsNumeric(Mid(Sheets("Sheet1").Cells(x, 1), start + 2, 1)) Then
Sheets("Sheet1").Cells(x, 2).Interior.Color = RGB(255, 0, 0)
Sheets("Sheet1").Cells(x, 2) = Sheets("Sheet1").Cells(x, 2) & Mid(Sheets("Sheet1").Cells(x, 1), start, 3)
start = start + 3
While IsNumeric(Mid(Sheets("Sheet1").Cells(x, 1), start, 1))
Sheets("Sheet1").Cells(x, 2) = Sheets("Sheet1").Cells(x, 2) & Mid(Sheets("Sheet1").Cells(x, 1), start, 1)
start = start + 1
Wend
Sheets("Sheet1").Cells(x, 2) = Sheets("Sheet1").Cells(x, 2) & vbCrLf
End If
End If
End If
If Not IsNumeric(Mid(Sheets("Sheet1").Cells(x, 1), start, 1)) Then
start = start + 1
End If
Loop While inicio < Len(Sheets("Comments").Cells(x, 1))
Скрипт отлично работает с небольшими строками (10-20 символов).При работе со строками, подобными приведенным выше, дела идут не так, как надо (мой компьютер значительно замедляется и Excel навсегда перестает отвечать на запросы).У вас есть идеи, как оптимизировать этот код?
Спасибо!