Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Проценка прайса по цветам ячейки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проценка прайса по цветам ячейки (Макросы/Sub)
Проценка прайса по цветам ячейки
anabioss13 Дата: Среда, 23.12.2015, 12:57 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 129
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте. Не знаю правильно ли выбрал раздел форума.. Мне кажется формулой этого не сделать. Могу ошибаться. Подскажите пожалуйста реально ли изменить числа во всех ячейках с учетом цвета? Есть файл, в нем ячейки в двух цветах зеленый и оранжевый. Для зеленого необходимо, чтобы программа пересчитала "число в ячейке разделить на 1000 и умножить на 700", а для оранжевого "число в ячейке разделить на 1000 и умножить на 850" и соответственно заменить на результат все. Есь еще числа где рядом скобки, скобки трогать не надо, а число тоже поменять. Возможно это вообще??
К сообщению приложен файл: _l.xlsx (95.8 Kb)
 
Ответить
СообщениеЗдравствуйте. Не знаю правильно ли выбрал раздел форума.. Мне кажется формулой этого не сделать. Могу ошибаться. Подскажите пожалуйста реально ли изменить числа во всех ячейках с учетом цвета? Есть файл, в нем ячейки в двух цветах зеленый и оранжевый. Для зеленого необходимо, чтобы программа пересчитала "число в ячейке разделить на 1000 и умножить на 700", а для оранжевого "число в ячейке разделить на 1000 и умножить на 850" и соответственно заменить на результат все. Есь еще числа где рядом скобки, скобки трогать не надо, а число тоже поменять. Возможно это вообще??

Автор - anabioss13
Дата добавления - 23.12.2015 в 12:57
_Boroda_ Дата: Среда, 23.12.2015, 13:39 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Такой вариант. Перед запуском выделяете нужный диапазон (можно с "лишними" ячейками).
[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]
К сообщению приложен файл: _l_1.xlsm (98.6 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТакой вариант. Перед запуском выделяете нужный диапазон (можно с "лишними" ячейками).
[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]

Автор - _Boroda_
Дата добавления - 23.12.2015 в 13:39
anabioss13 Дата: Среда, 23.12.2015, 13:41 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 129
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Я в екселе не мастак к сожалению и тем более в VBA)) Не могли бы вы это прикрутить к файлу? Я даже не представляю как этот текст использовать..
 
Ответить
СообщениеЯ в екселе не мастак к сожалению и тем более в VBA)) Не могли бы вы это прикрутить к файлу? Я даже не представляю как этот текст использовать..

Автор - anabioss13
Дата добавления - 23.12.2015 в 13:41
anabioss13 Дата: Среда, 23.12.2015, 13:45 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 129
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Что-то я не вижу изменений..
 
Ответить
СообщениеЧто-то я не вижу изменений..

Автор - anabioss13
Дата добавления - 23.12.2015 в 13:45
anabioss13 Дата: Среда, 23.12.2015, 13:52 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 129
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Все, разобрался. Работает! Спасибо, забыл еще попросить чтоб округлялись числа. Но в любом случае очень круто)) Еще раз спасибо!!
 
Ответить
СообщениеВсе, разобрался. Работает! Спасибо, забыл еще попросить чтоб округлялись числа. Но в любом случае очень круто)) Еще раз спасибо!!

Автор - anabioss13
Дата добавления - 23.12.2015 в 13:52
_Boroda_ Дата: Среда, 23.12.2015, 13:56 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Держите с округлением.
И проверьте ячейку К165 - там вместо скобки написано 9
К сообщению приложен файл: _l_2.xlsm (97.9 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДержите с округлением.
И проверьте ячейку К165 - там вместо скобки написано 9

Автор - _Boroda_
Дата добавления - 23.12.2015 в 13:56
SLAVICK Дата: Среда, 23.12.2015, 13:57 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
О пока делал макрос - тут уже столько всего написали :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]
Мой код немного короче будет :D
В файле выберите диапазон и нажмите кнопку
К сообщению приложен файл: _l-1-.xlsm (98.7 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Среда, 23.12.2015, 13:58
 
Ответить
СообщениеО пока делал макрос - тут уже столько всего написали :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]
Мой код немного короче будет :D
В файле выберите диапазон и нажмите кнопку

Автор - SLAVICK
Дата добавления - 23.12.2015 в 13:57
anabioss13 Дата: Среда, 23.12.2015, 14:00 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 129
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Круто!!!! Я просто в восторге))
 
Ответить
СообщениеКруто!!!! Я просто в восторге))

Автор - anabioss13
Дата добавления - 23.12.2015 в 14:00
anabioss13 Дата: Среда, 23.12.2015, 14:00 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 129
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем огромное спасибо!
 
Ответить
СообщениеВсем огромное спасибо!

Автор - anabioss13
Дата добавления - 23.12.2015 в 14:00
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проценка прайса по цветам ячейки (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!