A1 = "1","Транспортные услуги (нов)","18000.00","5","90000.00"
Нужно разобрать значение А1 указанное выше и назначить разным ячейкам значения оттуда между кавычками. Например: A2 = Транспортные услуги (нов) A3 = 18000.00 A4 = 5
и тд
Перебрал уже с десяток вариантов с форума, но такого варианта нигде не рассматривается
Sub iRazdel()
Dim i As Long
Dim iLastRow As Long
Dim mo As Object
Dim n As Integer
With CreateObject("VBScript.RegExp")
.Global = True
.IgnoreCase = True
.MultiLine = True
.Pattern = """.+?"""
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To iLastRow
If .Test(Cells(i, 1)) Then
Set mo = .Execute(Cells(i, 1))
Cells(i, 2).Resize(, mo.Count).NumberFormat = "@"
For n = 0 To mo.Count - 1
Cells(i, n + 2) = Mid(mo(n), 2, Len(mo(n)) - 2)
Next
End If
Next
End With
End Sub
Kuzmich, вроде и с SubMatches замечательно тоже работает, без необходимости извлекать подстроку
Скрытый текст
Код
Sub toColumns()
'правда ТСу нужно было по строкам, а не под столбцам
Dim irow As Long
Dim iLastRow As Long
Dim matchObject As Object
Dim iter As Integer
With CreateObject("VBScript.RegExp")
.Global = True
.IgnoreCase = True
.MultiLine = True
.Pattern = """(.+?)"""
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
For irow = 1 To iLastRow
If .Test(Cells(irow, 1)) Then
Set matchObject = .Execute(Cells(irow, 1))
Cells(irow, 2).Resize(, matchObject.Count).NumberFormat = "@"
For iter = 0 To matchObject.Count - 1
Cells(irow, iter + 2) = matchObject(iter).SubMatches(0)
Next
End If
Next
End With
End Sub