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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос для автоматического раскрашивания графика - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Макрос для автоматического раскрашивания графика
Archy Дата: Четверг, 31.03.2016, 16:33 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Доброго времени суток!

Вопрос не совсем по екселю, но точно по бейсику)

Возникла задача, в Power Point необходимо, чтобы график (обычная диаграмма) окрашивался при отрицательных значениях в красный, при положительных в зеленый

График строится через графики самого Power point (связи с еселем нет).
[moder]Что за название темы? Переделывайте согласно п.2 Правил форума.


Сообщение отредактировал Archy - Четверг, 31.03.2016, 17:10
 
Ответить
СообщениеДоброго времени суток!

Вопрос не совсем по екселю, но точно по бейсику)

Возникла задача, в Power Point необходимо, чтобы график (обычная диаграмма) окрашивался при отрицательных значениях в красный, при положительных в зеленый

График строится через графики самого Power point (связи с еселем нет).
[moder]Что за название темы? Переделывайте согласно п.2 Правил форума.

Автор - Archy
Дата добавления - 31.03.2016 в 16:33
Manyasha Дата: Четверг, 31.03.2016, 17:54 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 901 ±
Замечаний: 0% ±

Excel 2010, 2016
Archy, для двух цветов можно и без макроса: щелкаете ПКМ по ряду данных - формат ряда данных - Заливка: выбираете Сплошная заливка и ставите галочку "Инверсия для чисел <0". Выбираете цвет1 и цвет2.

Если будет больше условий, тогда макрос:
[vba]
Код
Sub setFormatCharts()
    'Цвета
    Dim clrGreen As Long: clrGreen = RGB(0, 142, 64)
    Dim clrGreenLight As Long: clrGreenLight = RGB(169, 225, 169)
    Dim clrYellow As Long: clrYellow = vbYellow
    Dim clrRed As Long: clrRed = RGB(192, 0, 0)
    
    For Each sl In ActiveWindow.Selection.SlideRange
        For Each sh In sl.Shapes
            If sh.HasChart Then
                For i = 1 To sh.Chart.SeriesCollection.Count
                    For j = 1 To sh.Chart.SeriesCollection(i).Points.Count
                        With sh.Chart.SeriesCollection(i).Points(j)
'                            On Error Resume Next
                            Select Case .DataLabel.Text
                    'Для Ваших условий
    '                            Case Is < 0: .Format.Fill.ForeColor.RGB = clrRed
    '                            Case Is > 0: .Format.Fill.ForeColor.RGB = clrGreen
                    
                    'Если будет больше условий
                    Case Is < -10: .Format.Fill.ForeColor.RGB = clrRed
                    Case -10 To 0: .Format.Fill.ForeColor.RGB = clrYellow
                    Case 0 To 10: .Format.Fill.ForeColor.RGB = clrGreenLight
                    Case Is > 10: .Format.Fill.ForeColor.RGB = clrGreen
                            End Select
                        End With
                    Next j
                Next i
            End If
        Next sh
    Next sl
End Sub
[/vba]
Макрос проходит по всем выделенным слайдам активной презентации, находит все диаграммы и красит ряды, основываясь на значения в подписях данных.
К сообщению приложен файл: primer.pptm (70.3 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеArchy, для двух цветов можно и без макроса: щелкаете ПКМ по ряду данных - формат ряда данных - Заливка: выбираете Сплошная заливка и ставите галочку "Инверсия для чисел <0". Выбираете цвет1 и цвет2.

Если будет больше условий, тогда макрос:
[vba]
Код
Sub setFormatCharts()
    'Цвета
    Dim clrGreen As Long: clrGreen = RGB(0, 142, 64)
    Dim clrGreenLight As Long: clrGreenLight = RGB(169, 225, 169)
    Dim clrYellow As Long: clrYellow = vbYellow
    Dim clrRed As Long: clrRed = RGB(192, 0, 0)
    
    For Each sl In ActiveWindow.Selection.SlideRange
        For Each sh In sl.Shapes
            If sh.HasChart Then
                For i = 1 To sh.Chart.SeriesCollection.Count
                    For j = 1 To sh.Chart.SeriesCollection(i).Points.Count
                        With sh.Chart.SeriesCollection(i).Points(j)
'                            On Error Resume Next
                            Select Case .DataLabel.Text
                    'Для Ваших условий
    '                            Case Is < 0: .Format.Fill.ForeColor.RGB = clrRed
    '                            Case Is > 0: .Format.Fill.ForeColor.RGB = clrGreen
                    
                    'Если будет больше условий
                    Case Is < -10: .Format.Fill.ForeColor.RGB = clrRed
                    Case -10 To 0: .Format.Fill.ForeColor.RGB = clrYellow
                    Case 0 To 10: .Format.Fill.ForeColor.RGB = clrGreenLight
                    Case Is > 10: .Format.Fill.ForeColor.RGB = clrGreen
                            End Select
                        End With
                    Next j
                Next i
            End If
        Next sh
    Next sl
End Sub
[/vba]
Макрос проходит по всем выделенным слайдам активной презентации, находит все диаграммы и красит ряды, основываясь на значения в подписях данных.

Автор - Manyasha
Дата добавления - 31.03.2016 в 17:54
Archy Дата: Пятница, 01.04.2016, 10:26 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Manyasha, Супер, все работает, огромное спасибо!
 
Ответить
СообщениеManyasha, Супер, все работает, огромное спасибо!

Автор - Archy
Дата добавления - 01.04.2016 в 10:26
VBA_learning Дата: Вторник, 18.07.2017, 18:39 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый вечер.
Помогите, пожалуйста.
Очень нужен макрос, который будет делать все тоже самое, только условие задается не по значению подписи, а по значению категории.
То есть, все результаты Иванова, например, вне зависимости от того, какой он будет по рейтингу, всегда будут красные.
Как не пыталась сама преобразовать макрос, приложенный выше, не получилось.
Заранее спасибо.


Сообщение отредактировал VBA_learning - Вторник, 18.07.2017, 19:02
 
Ответить
СообщениеДобрый вечер.
Помогите, пожалуйста.
Очень нужен макрос, который будет делать все тоже самое, только условие задается не по значению подписи, а по значению категории.
То есть, все результаты Иванова, например, вне зависимости от того, какой он будет по рейтингу, всегда будут красные.
Как не пыталась сама преобразовать макрос, приложенный выше, не получилось.
Заранее спасибо.

Автор - VBA_learning
Дата добавления - 18.07.2017 в 18:39
  • Страница 1 из 1
  • 1
Поиск:

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