Здравствуйте, знатоки! Необходимо изменить текст в ячейках: сделать перенос с новой строки текста после запятой и добавить в числовые значения порядок - четыре знака после запятой. Код для переноса я написал, а вот на добавление нулей не получается. Файл прилагаю. Помогите, пожалуйста! Может и для других пригодится, тех кто готовит информацию для размещения на сайте Госзакупок.
Здравствуйте, знатоки! Необходимо изменить текст в ячейках: сделать перенос с новой строки текста после запятой и добавить в числовые значения порядок - четыре знака после запятой. Код для переноса я написал, а вот на добавление нулей не получается. Файл прилагаю. Помогите, пожалуйста! Может и для других пригодится, тех кто готовит информацию для размещения на сайте Госзакупок.VelemShub
VelemShub, Добрый день. С форматом что-то не вышло у меня, сделал по циклу... Может кто-нибудь поизящней сделает. [vba]
Код
n_ = Split(Cells(i, Стлб).Value, ",") For x = LBound(n_) To UBound(n_) p = InStr(n_(x), ".") If p Then n_(x) = Replace(n_(x), ".", ",") For q = Len(n_(x)) To p + 3 n_(x) = n_(x) & "0" Next q Else n_(x) = n_(x) & ",0000" End If Next x Cells(i, Стлб).Value = Join(n_, Chr(10))
[/vba]
VelemShub, Добрый день. С форматом что-то не вышло у меня, сделал по циклу... Может кто-нибудь поизящней сделает. [vba]
Код
n_ = Split(Cells(i, Стлб).Value, ",") For x = LBound(n_) To UBound(n_) p = InStr(n_(x), ".") If p Then n_(x) = Replace(n_(x), ".", ",") For q = Len(n_(x)) To p + 3 n_(x) = n_(x) & "0" Next q Else n_(x) = n_(x) & ",0000" End If Next x Cells(i, Стлб).Value = Join(n_, Chr(10))
Sub qq() Dim spl, i& spl = Split(ActiveCell.Value, vbLf) For i = 0 To UBound(spl) spl(i) = Format(spl(i), "0.0000") Next ActiveCell.Value = Join(spl, vbLf) End Sub
[/vba] Для столбцов А и B [vba]
Код
Sub qqq() Dim spl, i& spl = Split(ActiveCell.Value, ",") For i = 0 To UBound(spl) spl(i) = Format(spl(i), "0.0000") Next ActiveCell.Value = Join(spl, vbLf) End Sub
[/vba]
Для столбца D [vba]
Код
Sub qq() Dim spl, i& spl = Split(ActiveCell.Value, vbLf) For i = 0 To UBound(spl) spl(i) = Format(spl(i), "0.0000") Next ActiveCell.Value = Join(spl, vbLf) End Sub
[/vba] Для столбцов А и B [vba]
Код
Sub qqq() Dim spl, i& spl = Split(ActiveCell.Value, ",") For i = 0 To UBound(spl) spl(i) = Format(spl(i), "0.0000") Next ActiveCell.Value = Join(spl, vbLf) End Sub
О! Накидали уже сколько. Зато Джойн у Андрея подсмотрел, забыл я про него совсем VelemShub, макрос целиком, и перенос строк, и 4 нуля сразу [vba]
Код
Sub tt() Dim d_ As Range On Error Resume Next c_ = CByte(InputBox("Введите № столбца в котором будет производиться обрабока данных", "№ столбца")) a = Cells(1, c_) If Err Then Exit Sub On Error GoTo 0 Application.ReferenceStyle = xlA1 r0_ = 2 r1_ = Cells(Rows.Count, c_).End(xlUp).Row If r1_ < r0_ Then Exit Sub For Each d_ In Cells(r0_, c_).Resize(r1_ - r0_ + 1) mas_ = Split(d_, ",") For i = 0 To UBound(mas_) mas_(i) = Format(Replace(mas_(i), ".", Application.DecimalSeparator), "0.0000") Next i d_ = Join(mas_, vbLf) Next d_ End Sub
[/vba]
О! Накидали уже сколько. Зато Джойн у Андрея подсмотрел, забыл я про него совсем VelemShub, макрос целиком, и перенос строк, и 4 нуля сразу [vba]
Код
Sub tt() Dim d_ As Range On Error Resume Next c_ = CByte(InputBox("Введите № столбца в котором будет производиться обрабока данных", "№ столбца")) a = Cells(1, c_) If Err Then Exit Sub On Error GoTo 0 Application.ReferenceStyle = xlA1 r0_ = 2 r1_ = Cells(Rows.Count, c_).End(xlUp).Row If r1_ < r0_ Then Exit Sub For Each d_ In Cells(r0_, c_).Resize(r1_ - r0_ + 1) mas_ = Split(d_, ",") For i = 0 To UBound(mas_) mas_(i) = Format(Replace(mas_(i), ".", Application.DecimalSeparator), "0.0000") Next i d_ = Join(mas_, vbLf) Next d_ End Sub