gpt4 book ai didi

arrays - Excel "Subtotal"数组公式 - sum.if 的其他形式

转载 作者:行者123 更新时间:2023-12-04 22:09:55 26 4
gpt4 key购买 nike

这是问题的延续 excel different SUM.IF array function , 但由于我已将其标记为已解决,因此我创建了一个新问题。

我想要的是一些值的不同总和,并且我已经实现了@Marc 的解决方案。然而,报告要求已经改变。我现在需要排除所有隐藏的值,但仍保留原始计算方法。基本上我想以与 SUBTOTAL(109, ref) 相同的方式添加一个功能。

为此,我创建了一个简单的 VBA 函数 CellIsNotHidden(Range),它根据单元格返回 0 或 1。

因此,我最好的猜测是这样的公式:{=SUM(IF($B1:$B7<>$B2:$B8,D2:D8,0)*CellIsNotHidden(D2:D8))}
但是这个函数不起作用,因为 CellIsNotHidden 不是数组函数。

我该如何解决这个问题?

提前谢谢

贡纳尔

编辑:

以为我应该包括简单的 VBA 函数:

  Function CellIsNotHidden(InputRange As Range)

If InputRange.Cells.Height = 0 Then
CellIsNotHidden = 0
Else
If InputRange.Cells.Width = 0 Then
CellIsNotHidden = 0
Else
CellIsNotHidden = 1
End If
End If

End Function

最佳答案

试试这个 UDF CellIsNotHidden .这将处理一维(向量)和二维数组。测试:

Function CellIsNotHidden(MyRange As Range) As Variant
Dim RootCell As Range
Dim tmpResult() As Long
Dim i As Long
Dim j As Long

On Error GoTo Whoops
ReDim tmpResult(0 To MyRange.Rows.Count - 1, 0 To MyRange.Columns.Count - 1)
Set RootCell = MyRange.Cells(1, 1)
For j = 0 To MyRange.Columns.Count - 1
For i = 0 To MyRange.Rows.Count - 1
tmpResult(i, j) = Not (RootCell.Offset(i, j).EntireColumn.hidden Or RootCell.Offset(i, j).EntireRow.hidden)
Next i
Next j
CellIsNotHidden = tmpResult
On Error GoTo 0
Exit Function
Whoops:
Debug.Print Err & " " & Error
End Function

关于arrays - Excel "Subtotal"数组公式 - sum.if 的其他形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10489966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com