Страницы: 1
RSS
Среднее значение без учета закрашенных ячеек.
 
Добрый день!
Подскажите как написать формулу среднего значения, чтобы считалось без учета закрашенных ячеек.
Вообще так можно сделать?
 
Если красятся от фанаря, то только макросом.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
какова логика закраски ячеек если по принципу как хочу так и крашу то только макрос
Лень двигатель прогресса, доказано!!!
 
Цитата
MrBabka написал:
Вообще так можно сделать?
сделать то можно, но это не стандартными функциями. Вам это действительно принципиально так нужно?
По вопросам из тем форума, личку не читаю.
 
Цветом выделены цены которые по акции.
Здесь можно сказать от фонаря закрашивается.
Хорошо, если макрос то кто то подсказать его может?
 
Код
Function NonColoredAverage(A As Range)
    Dim s As Double
    Dim q As Long
    For Each MCell In A
        If IsNumeric(MCell) And MCell.Interior.ColorIndex = -4142 Then
            s = s + MCell.Value
            q = q + 1
        End If
    Next
    NonColoredAverage = s / IIf(q > 0, q, 1)
End Function
Изменено: БМВ - 19.04.2018 16:46:54
По вопросам из тем форума, личку не читаю.
 
БМВ, а обещали же не кодить ;)  
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Off

Bema, Болею, наверно по этому, сижу дома жду дохтора, со вчерашнего вечера (ДМС в действи, блин) . Если не поправлюсь, то начну и на территорию PQ залезать :-), так штырит.

По вопросам из тем форума, личку не читаю.
 
БМВ, Спасибо большое.

А еще как то можно усовершенствовать его, чтобы если нужно ещё закрасить ячейку, то формула автоматически пересчитывала? Сейчас нужно заново прописывать формулу.
 
Цитата
MrBabka написал:
чтобы если нужно ещё закрасить ячейку, то формула автоматически пересчитывала
Нет, так не получится, максимум можно сделать, что б функция пересчитывалась каждый раз при пересчете листа, для этого просто добавить одну строку Application.Volatile
Код
Function NonColoredAverage(A As Range)
    Dim s As Double
    Dim q As Long
    Application.Volatile
    For Each MCell In A
        If IsNumeric(MCell) And MCell.Interior.ColorIndex = -4142 Then
            s = s + MCell.Value
            q = q + 1
        End If
    Next
    NonColoredAverage = s / IIf(q > 0, q, 1)
End Function

, но форматированеи ячейки это не вызывает, а значит надо писать обработчик изменений на листе и это уже относится к конкртеному файлу, а не к функции..
По вопросам из тем форума, личку не читаю.
 
БМВ,
Что то добавление Application.Volatile совсем не чего считает.
Ладно спасибо большое и на этом. Просто тогда формулу буду по новой писать, не чего страшного.
Спасибо.
 
Странно, Пересчет по F9, работает.
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх