Здравствуйте. Не знаю правильно ли выбрал раздел форума.. Мне кажется формулой этого не сделать. Могу ошибаться. Подскажите пожалуйста реально ли изменить числа во всех ячейках с учетом цвета? Есть файл, в нем ячейки в двух цветах зеленый и оранжевый. Для зеленого необходимо, чтобы программа пересчитала "число в ячейке разделить на 1000 и умножить на 700", а для оранжевого "число в ячейке разделить на 1000 и умножить на 850" и соответственно заменить на результат все. Есь еще числа где рядом скобки, скобки трогать не надо, а число тоже поменять. Возможно это вообще??
Здравствуйте. Не знаю правильно ли выбрал раздел форума.. Мне кажется формулой этого не сделать. Могу ошибаться. Подскажите пожалуйста реально ли изменить числа во всех ячейках с учетом цвета? Есть файл, в нем ячейки в двух цветах зеленый и оранжевый. Для зеленого необходимо, чтобы программа пересчитала "число в ячейке разделить на 1000 и умножить на 700", а для оранжевого "число в ячейке разделить на 1000 и умножить на 850" и соответственно заменить на результат все. Есь еще числа где рядом скобки, скобки трогать не надо, а число тоже поменять. Возможно это вообще??anabioss13
Такой вариант. Перед запуском выделяете нужный диапазон (можно с "лишними" ячейками). [vba]
Код
Sub tt() Dim si_ As Range n_ = Selection.Cells.Count If n_ = 0 Then Exit Sub col1_ = 5296274 col2_ = 49407 m1_ = 0.7 m2_ = 0.85 For i = 1 To n_ Set si_ = Selection(i) csi_ = si_.Interior.Color If csi_ = col1_ Or csi_ = col2_ Then If IsNumeric(si_) Then If csi_ = col1_ Then si_ = si_ * m1_ Else si_ = si_ * m2_ End If Else p_ = 0 On Error Resume Next p_ = WorksheetFunction.Search("(", si_) On Error GoTo 0 If p_ Then a1_ = Left(si_, p_ - 1) a2_ = Mid(si_, p_, 99) If csi_ = col1_ Then a1_ = a1_ * m1_ Else a1_ = a1_ * m2_ End If si_ = a1_ & a2_ End If End If End If Next i End Sub
[/vba]
Такой вариант. Перед запуском выделяете нужный диапазон (можно с "лишними" ячейками). [vba]
Код
Sub tt() Dim si_ As Range n_ = Selection.Cells.Count If n_ = 0 Then Exit Sub col1_ = 5296274 col2_ = 49407 m1_ = 0.7 m2_ = 0.85 For i = 1 To n_ Set si_ = Selection(i) csi_ = si_.Interior.Color If csi_ = col1_ Or csi_ = col2_ Then If IsNumeric(si_) Then If csi_ = col1_ Then si_ = si_ * m1_ Else si_ = si_ * m2_ End If Else p_ = 0 On Error Resume Next p_ = WorksheetFunction.Search("(", si_) On Error GoTo 0 If p_ Then a1_ = Left(si_, p_ - 1) a2_ = Mid(si_, p_, 99) If csi_ = col1_ Then a1_ = a1_ * m1_ Else a1_ = a1_ * m2_ End If si_ = a1_ & a2_ End If End If End If Next i End Sub
Я в екселе не мастак к сожалению и тем более в VBA)) Не могли бы вы это прикрутить к файлу? Я даже не представляю как этот текст использовать..
Я в екселе не мастак к сожалению и тем более в VBA)) Не могли бы вы это прикрутить к файлу? Я даже не представляю как этот текст использовать..anabioss13
О пока делал макрос - тут уже столько всего написали :o Ну вот еще мой вариант: [vba]
Код
Sub d() Dim c As Range, i#, n#, s$, col1&, col2&, k1#, k2# col1 = 5296274: k1 = 0.7 col2 = 49407: k2 = 0.85 For Each c In Selection If c.Interior.Color = col1 Then If IsNumeric(c) Then c = Round(c * k1, 0) i = InStr(1, c, "(") If i > 0 Then c.Value = Round(Left(c, i - 1) * k1, 0) & Mid(c, i, Len(c)) End If If c.Interior.Color = col2 Then If IsNumeric(c) Then c = Round(c * k2, 0) i = InStr(1, c, "(") If i > 0 Then c.Value = Round(Left(c, i - 1) * k2, 0) & Mid(c, i, Len(c)) End If Next End Sub
[/vba] Мой код немного короче будет В файле выберите диапазон и нажмите кнопку
О пока делал макрос - тут уже столько всего написали :o Ну вот еще мой вариант: [vba]
Код
Sub d() Dim c As Range, i#, n#, s$, col1&, col2&, k1#, k2# col1 = 5296274: k1 = 0.7 col2 = 49407: k2 = 0.85 For Each c In Selection If c.Interior.Color = col1 Then If IsNumeric(c) Then c = Round(c * k1, 0) i = InStr(1, c, "(") If i > 0 Then c.Value = Round(Left(c, i - 1) * k1, 0) & Mid(c, i, Len(c)) End If If c.Interior.Color = col2 Then If IsNumeric(c) Then c = Round(c * k2, 0) i = InStr(1, c, "(") If i > 0 Then c.Value = Round(Left(c, i - 1) * k2, 0) & Mid(c, i, Len(c)) End If Next End Sub
[/vba] Мой код немного короче будет В файле выберите диапазон и нажмите кнопкуSLAVICK