Почему эта формула не исключает пустые ячейки, несмотря на объект "IsEmpty"? - PullRequest
0 голосов
/ 17 января 2019

Приведенная ниже формула не дает мне желаемого результата, так как она также складывает ячейки, которые не имеют значения в них. «IsEmpty» должен исключать эти ячейки?!

Это мой код:

`Function ScopeSum() As Long

Dim scopeSumResult As Long
Dim xrow As Long, xcol As Long
Dim i As Long
Dim isEmptyVar As Range

With Sheets("Database_UA")

    i = .Cells(Rows.Count, "B").End(xlUp).Row - _
    .Cells(Rows.Count, "B").End(xlUp).End(xlUp).Row + 1

    xrow = xRowPrint
    xcol = 3

    For j = 1 To i

        If Not IsEmpty(.Cells(xrow, xcol).Value) Then
            scopeSumResult = scopeSumResult + .Cells(xrow, xcol).Value - 1
        End If

        xcol = xcol + 1

    Next

End With

ScopeSum = scopeSumResult

End Function`

Также найдите скриншот рабочей таблицы здесь: enter image description here

Диапазон G6: G9 - это ячейки, в которые вставляется формула. Например, в ячейке G6 должно быть 2, а не 1.

Спасибо за помощь, я все перепробовал и действительно потерян!

1 Ответ

0 голосов
/ 18 января 2019

Я не смог воспроизвести проблему с IsEmpty, все работает как положено, как вы можете видеть в минималистичном коде, который я пробовал. Поэтому я думаю, что проблема в каком-то коде, который вы выполняете за пределами области действия функции.

Function ScopeSum(rng As Range) As Double
    Dim cell As Range
    Dim cumulative As Double

    For Each cell In rng.Cells
        If Not IsEmpty(cell.Value) Then
            cumulative = cumulative + cell.Value - 1
        End If
    Next cell

    ScopeSum = cumulative
End Function

enter image description here

Кроме того, не просто

=SUM(C3:F3)-COUNTA(C3:F3)

просто сделать то же самое для каждой строки?

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