Добрый день уважаемые знатоки! Уважаемый Борода составил макрос, который выполняет:
- из таблицы, выбирает ДВА столбца (в примере выделено синим) и производит следующие действия как в примере ниже:
Пример:
БЫЛО ТАК
100м2---0,385 м----7,4 10м-----8,2
СТАЛО так:
м2---38,5 м-----7,4 м-----82
Т.е. макрос убирает все ЧИСЛОВЫЕ значения со столбца и одновременно умножает на убранное число то значение, которое в следующем столбце.
Хотел бы попросить уважаемого Бороду (или кого-либо еще), в прикрепленном примере, добавить действия по третьему столбу - разделить и убрать подчеркивание.
Спасибо.
Добрый день уважаемые знатоки! Уважаемый Борода составил макрос, который выполняет:
- из таблицы, выбирает ДВА столбца (в примере выделено синим) и производит следующие действия как в примере ниже:
Пример:
БЫЛО ТАК
100м2---0,385 м----7,4 10м-----8,2
СТАЛО так:
м2---38,5 м-----7,4 м-----82
Т.е. макрос убирает все ЧИСЛОВЫЕ значения со столбца и одновременно умножает на убранное число то значение, которое в следующем столбце.
Хотел бы попросить уважаемого Бороду (или кого-либо еще), в прикрепленном примере, добавить действия по третьему столбу - разделить и убрать подчеркивание.
Sub tt() c_ = 4 r0_ = 5 n_ = Cells(Rows.Count, c_).End(3).Row - r0_ + 1 If n_ < 1 Then Exit Sub ar = Cells(r0_, c_).Resize(n_, 3) On Error Resume Next For i = 1 To n_ If IsNumeric(ar(i, 2)) And ar(i, 2) > 0 Then ar(i, 1) = Trim(ar(i, 1)) If CByte(Left(ar(i, 1), 1)) Then For j = 1 To Len(ar(i, 1)) If Not IsNumeric(Left(ar(i, 1), j)) Then ar(i, 3) = ar(i, 3) / Left(ar(i, 1), j - 1) ar(i, 2) = ar(i, 2) * Left(ar(i, 1), j - 1) ar(i, 1) = Mid(ar(i, 1), j) Exit For End If Next j End If End If Next i Cells(r0_, c_).Resize(n_, 3) = ar Cells(r0_, c_ + 2).Resize(n_).Font.Underline = xlUnderlineStyleNone End Sub
[/vba]
Так нужно? [vba]
Код
Sub tt() c_ = 4 r0_ = 5 n_ = Cells(Rows.Count, c_).End(3).Row - r0_ + 1 If n_ < 1 Then Exit Sub ar = Cells(r0_, c_).Resize(n_, 3) On Error Resume Next For i = 1 To n_ If IsNumeric(ar(i, 2)) And ar(i, 2) > 0 Then ar(i, 1) = Trim(ar(i, 1)) If CByte(Left(ar(i, 1), 1)) Then For j = 1 To Len(ar(i, 1)) If Not IsNumeric(Left(ar(i, 1), j)) Then ar(i, 3) = ar(i, 3) / Left(ar(i, 1), j - 1) ar(i, 2) = ar(i, 2) * Left(ar(i, 1), j - 1) ar(i, 1) = Mid(ar(i, 1), j) Exit For End If Next j End If End If Next i Cells(r0_, c_).Resize(n_, 3) = ar Cells(r0_, c_ + 2).Resize(n_).Font.Underline = xlUnderlineStyleNone End Sub