Добрый день. Есть ли такая функция как преобразовать текст (числа через запятую с пробелом), в строки в эксель. Нужно через макрос, т.к. строк с текстом много. Спасибо.
Добрый день. Есть ли такая функция как преобразовать текст (числа через запятую с пробелом), в строки в эксель. Нужно через макрос, т.к. строк с текстом много. Спасибо.tarvs
В Excel такой функции нет На VBA для Вашего файла можно так (разделитель по умолчанию запятая с пробелом, но можно установить другой): [vba]
Код
Function СЦЕПИТЬ_ЧЕРЕЗ_РАЗДЕЛИТЕЛЬ(Диапазон As Range, Optional Разделитель As String = ", ") arr = Application.Transpose(Диапазон) СЦЕПИТЬ_ЧЕРЕЗ_РАЗДЕЛИТЕЛЬ = Join(arr, Разделитель) End Function
[/vba]
В Excel такой функции нет На VBA для Вашего файла можно так (разделитель по умолчанию запятая с пробелом, но можно установить другой): [vba]
Код
Function СЦЕПИТЬ_ЧЕРЕЗ_РАЗДЕЛИТЕЛЬ(Диапазон As Range, Optional Разделитель As String = ", ") arr = Application.Transpose(Диапазон) СЦЕПИТЬ_ЧЕРЕЗ_РАЗДЕЛИТЕЛЬ = Join(arr, Разделитель) End Function
Public Sub www() Dim c As Range, a For Each c In Selection a = Application.Trim(Split(c, ",")) c.Offset(, 1).Resize(, UBound(a)).NumberFormat = "@" c.Offset(, 1).Resize(, UBound(a)) = a Next End Sub
[/vba]Выделить нужный диапазон и запустить.
Цитата (Pelena)
ТС нужно обратное преобразование
Угу [vba]
Код
Public Sub www() Dim c As Range, a For Each c In Selection a = Application.Trim(Split(c, ",")) c.Offset(, 1).Resize(, UBound(a)).NumberFormat = "@" c.Offset(, 1).Resize(, UBound(a)) = a Next End Sub
Public Sub www() Dim c, a, i&, r, n r = Selection.Value i = 7 ActiveSheet.Copy After:=Worksheets(Worksheets.Count) Range("A68:F69").MergeCells = False [f:f].NumberFormat = "@" For c = 1 To UBound(r) a = Application.Transpose(Application.Trim(Split(r(c, 6), ","))) For n = 1 To 5 Cells(i, n).Resize(UBound(a)) = r(c, n) Next Cells(i, 6).Resize(UBound(a)) = a i = i + UBound(a) Next End Sub
[/vba]
Даже так: [vba]
Код
Public Sub www() Dim c, a, i&, r, n r = Selection.Value i = 7 ActiveSheet.Copy After:=Worksheets(Worksheets.Count) Range("A68:F69").MergeCells = False [f:f].NumberFormat = "@" For c = 1 To UBound(r) a = Application.Transpose(Application.Trim(Split(r(c, 6), ","))) For n = 1 To 5 Cells(i, n).Resize(UBound(a)) = r(c, n) Next Cells(i, 6).Resize(UBound(a)) = a i = i + UBound(a) Next End Sub