2016-08-03 3 views
3

Кто-нибудь сталкивается с функцией, которая будет работать с условным форматированием?Пользовательская функция формулы excel UDF для подсчета Условное форматирование

есть некоторые аддоны для kutools и albebits, но они не формула на основе (Вы должны выбрать все вручную)

Я нашел это, но работает только с ручным форматированием

Function ColorFunction(rColor As Range, rRange As Range, Optional SUM As Boolean) 
Dim rCell As Range 
Dim lCol As Long 
Dim vResult 
lCol = rColor.Interior.ColorIndex 
If SUM = True Then 
    For Each rCell In rRange 
    If rCell.Interior.ColorIndex = lCol Then 
      vResult = WorksheetFunction.SUM(rCell) + vResult 
    End If 
    Next rCell 
Else 
    For Each rCell In rRange 
    If rCell.Interior.ColorIndex = lCol Then 
      vResult = 1 + vResult 
    End If 
    Next rCell 
End If 
ColorFunction = vResult 
End Function 

ответ

3

Вслед от @Jeeped и @Comintern ...

Это работает для меня - упрощенный пример:

Function WrapCountReds(rRange) 
    WrapCountReds = rRange.Parent.Evaluate("CountReds(" & _ 
          rRange.Address(False, False) & ")") 
End Function 

'can't call this directly from a worksheet but can be called via evaluate 
Public Function CountReds(rRange As Range) 

    Dim rCell As Range 
    Dim vResult 

    For Each rCell In rRange 
     If rCell.DisplayFormat.Interior.ColorIndex = 3 Then 
      vResult = 1 + vResult 
     End If 
    Next rCell 

    CountReds = vResult 
End Function 

Пример использования рабочего листа:

=WrapCountReds("A1:A100") 
+1

Интересно. Я никогда бы не подумал использовать Evaluate в качестве функции обертки. – Comintern

+1

@Comintern - related: https://stackoverflow.com/questions/23433096/using-a-udf-in-excel-to-update-the-worksheet/23437280#23437280 –

Смежные вопросы