Excel не считает ячейку пустой - PullRequest
0 голосов
/ 13 июля 2020

Я хотел бы определить функцию или форматирование таким образом, чтобы функция Excel «COUNTBLANK ()» не считала пустой «серую ячейку», где пользователю не разрешено ничего вводить.

Например, предположим, что есть отчет о балансе, где в ячейке C3 есть «ячейка серого цвета», чтобы указать пользователю, что ему не разрешено писать текст или делать git что-либо внутри ячейки C3, включая «0 $» или «- $».

Предположим, что в ячейке C100 есть функция СЧИТАТЬПУСТОТЫ (C2: C99), чтобы проверить, есть ли какие-либо пропущенные значения в столбце C. Функция вернет СЧИТАТЬПУСТОТЫ (C2: C99) = 1, так как в ячейке C3 пользователь не отправлял текст и не делал git ничего. Однако ячейка C3 окрашена в серый цвет и должна быть пустой, и поэтому не считается отсутствующей (по определению).

Есть ли какая-либо функция / форматирование?

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

Вместо добавления пробела в ячейку и защиты их, как указано в одном из комментариев, вы можете использовать следующую функцию, найденную здесь . С помощью этой функции вы подсчитываете количество ячеек в rRange с тем же цветом, что и rColor

    Function ColorFunction(rColor As Range, rRange As Range, Optional StrCond As String) As Long

    Dim rCell As Range
    Dim lCol As Long
    Dim vResult As Long

    lCol = rColor.Interior.color

    For Each rCell In rRange
        If rCell.Interior.color = lCol Then
            If StrCond <> "" Then
                If rCell.Value = StrCond Then
                    vResult = vResult + 1
                End If
            Else
                vResult = vResult + 1
            End If
        End If
    Next rCell

    ColorFunction = vResult
End Function

. Тогда нет необходимости беспокоиться о цвете, потому что вы выбираете цвет в качестве параметра в функция.

Тогда ваша формула будет

COUNTBLANK(C2:C99) - ConditionalColorFunction(C3,C2-C99)
0 голосов
/ 13 июля 2020

Попробуйте следующую функцию, пожалуйста:

Function CountBlkGray(rng As Range) As Long
   Dim lngGray As Long, c As Range
   For Each c In rng
    If c.Value = "" And (c.Interior.ColorIndex = 15 Or _
            c.Interior.ColorIndex = 2 Or c.Interior.ColorIndex = 48 Or _
                c.Interior.ColorIndex = 16) Then lngGray = lngGray + 1
   Next
   CountBlkGray = WorksheetFunction.CountBlank(rng) - lngGray
End Function

Вы можете просто использовать ее как формулу:

=CountBlkGray(A1:A16)

Серые ячейки будут рассматриваться как непустые ...

Но вы должны использовать стандартные серые цвета (из Excel доступен Pallete)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...