Страницы

среда, 30 сентября 2015 г.

Пользовательские функции Excel Часть 2-2 Вариант 1

Создать макрос (процедуру-подпрограмму), обеспечивающий следующие действия:
- отмену ранее существующей заливки ячеек таблицы;
- заливку желтым цветом ячеек таблицы со значениями выпуска, которые больше среднемесячного выпуска по всей таблице.
Общее описание см. по ссылке внизу
Текст процедуры:

Sub Заливка_ячеек()
Dim rng As Range
Dim c As Integer
Dim r As Integer
Dim sum As Long
Dim sred As Double
Dim cnt As Integer
'установка пользовательского диапазона
'для определения количества занятых строк
Set rng = ActiveSheet.UsedRange
'отмена предыдущей заливки
Range(rng.Cells(3, 3), rng.Cells(rng.Rows.Count, 8)).Interior.Pattern = xlNone
'обнуляем сумму и счетчик ячеек с данными
sum = 0
cnt = 0
'суммируем выпуск по всем ячейкам с отработкой
'считаем количество месяцев
For r = 3 To rng.Rows.Count
    For c = 3 To 8
        sum = sum + Cells(r, c)
        cnt = cnt + 1
    Next c
Next r
'рассчитываем среднемесячный выпуск по всей таблице
sred = sum / cnt
'если текущее значение больше среднего, то
'производится заливка желтым цветом
For r = 3 To rng.Rows.Count
    For c = 3 To 8
        If Cells(r, c) > sred Then Cells(r, c).Interior.Color = RGB(255, 255, 0)
    Next c
Next r
Set rng = Nothing   'Освобождение памяти
End Sub
Сначала отменяем заливку ячеек с данными, затем рассчитываем общую сумму выпуска (тип Long на случай большого числа) и общее число месяцев. Число месяцев можно было бы рассчитать другим способом, например, умножить число строк пользовательского диапазона, за вычетом 2, на 6.
Затем считаем среднее значение, а потом еще раз проходим два цикла – сравниваем текущее значение ячейки со средним. Если число в ячейке больше среднего, то закрашиваем ее желтым цветом.

Дополнительные материалы к этому посту

Общее описание и подробности всех вариантов, список вариантов

Общий список всех сообщений по этой работе