Подсчет объединенных ячеек как одной с функцией COUNT IF при одновременном использовании других критериев COUNT IF - PullRequest
0 голосов
/ 06 сентября 2018

Я использовал следующий модуль VBA для подсчета списка элементов в столбце на основе цвета ячейки с помощью функции COUNT IF:

Function CountCcolor(range_data As range, criteria As range) As Long
    Dim datax As range
    Dim xcolor As Long
xcolor = criteria.Interior.ColorIndex
For Each datax In range_data
    If datax.Interior.ColorIndex = xcolor Then
        CountCcolor = CountCcolor + 1
    End If
Next datax
End Function

Тем не менее, мой список также содержит объединенные ячейки, и, хотя вышеуказанная функция работает, она считает объединенные ячейки как количество ячеек, составляющих объединенные ячейки (например, объединенная ячейка, состоящая из 3 обычных ячеек, считается как 3 в списке). Если возможно, мне нужен способ подсчитать объединенные ячейки как 1 ячейку, сохраняя при этом подсчет цветовой кодировки.

Любая помощь будет оценена, спасибо!

1 Ответ

0 голосов
/ 06 сентября 2018

Рассматривайте объединенные ячейки и не объединенные ячейки отдельно, затем сложите все вместе:

Function CountCcolor(range_data As Range, criteria As Range) As Long
    Application.Volatile
    Dim datax As Range
    Dim xcolor As Long
    Set D1 = CreateObject("scripting.dictionary")
    xcolor = criteria.Interior.ColorIndex

    For Each datax In range_data
        If datax.Interior.ColorIndex = xcolor Then
            If datax.MergeCells Then
                D1(datax.MergeArea.Address) = datax.MergeArea.Address
            Else
                CountCcolor = CountCcolor + 1
            End If
        End If
    Next datax

    CountCcolor = CountCcolor + D1.Count
End Function

Источники: Здесь и там

...