Доброго времени суток! Скажите пожалуйста, есть вот такая ситуация - длинная книга Прайс, в которой нет форматирования. То есть Название услуги и её стоимость в одной ячейке (из-за копирования с Word'a.
"1. 5.3 Разработка индивидуальной схемы лечения 300,00 р."
Вот в таком неподобающем виде. Что нужно сделать: 1) Удалить "1. 5.3 ", 2) оставшуюся часть с названием услуги и её стоимостью разделить на 2 ячейки.
Для этого нужно писать макрос? Или можно обойтись каким-нибудь другим инструментом? Как это сделать?
Sub Raznesti()
Dim i As Long
Dim iLastRow As Long
Dim arr
Dim j As Integer
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To iLastRow
arr = Split(Split(Cells(i, 1), " ", 3)(2), " ")
For j = 0 To UBound(arr) - 2
Cells(i, 2) = Cells(i, 2) & arr(j) & " "
Next
For j = UBound(arr) - 1 To UBound(arr)
Cells(i, 3) = Cells(i, 3) & arr(j) & " "
Next
Next
End Sub
Большое спасибо за ответы! Затестил все предложенные варианты, теперь думаю, что из 3 использовать
Из ответов vikttur, и _Igor_61, понял, что можно сделать проще,а не углубляться) А макрос от Kuzmich, показал, что стоит углубляться, если хочешь решить сложные задачи Однозначно сохраню себе макрос, в работе ещё не раз пригодиться!
В ячейке есть текст + числа. Нужно отделить текст от чисел, т.е. разнести их в разные столбцы. Причем, текст может состоять из 1, из 2, 3 и т.д. слов. От текста цифры всегда отделены пробелом. Пример во вложении
Function bbb$(text)
With CreateObject("VBScript.RegExp"): .Pattern = " \d+,\d+ р\.": bbb = Trim(.Execute(text)(0))
End With
End Function
Код
Function aaa$(text)
With CreateObject("VBScript.RegExp"): .Pattern = "\d+\. \d+\.\d+ ": aaa = .Replace(text, "")
.Pattern = " \d+,\d+ р\.": aaa = Trim(.Replace(aaa, ""))
End With
End Function