【问题标题】:Ignore blank parameters in Excel array formula忽略 Excel 数组公式中的空白参数
【发布时间】:2015-09-18 18:43:33
【问题描述】:

我正在使用数组公式返回大型数据集的总和和计数。

数组公式最多可以有 3 个参数,但公式需要适应任何或所有参数为 <blank>不使用 VBA

例如

A1 = "Australia"
B1 = "Finance"
C1 = "Female"

D1包含公式

D1 = {count(if((region=A1)*(sector=B1)*(gender=C1),population))}

有时其中一个条件为空白

 A1 = "Australia"
 B1 = <blank>
 C1 = "Male"

在这种情况下,我希望公式返回等价于:

D1 = {count(if((region=A1)*(gender=C1),population))}

在极端情况下,A1、B1 和 C1 可能全为空白,在这种情况下,D1 中的公式应返回与 Count(population) 等效的值

有没有办法创建一个考虑这些可能性的数组公式?我最初试图创建一个动态参数字符串

E1 = "(region=A1)*(sector=B1)*(gender=C1)"

然后使用字符串作为数组公式中的参数

D1 = {count(if(E1,population))}

但我可以找到一种方法来让它发挥作用。

我尝试了许多解决方案,但总是缺少一个关键元素。通过使用isblank,我可以确定单元格是否为空白,但为了使其有用,我需要将此返回值转换为长度为count(population) 的布尔值数组。

非常感谢任何和所有想法。

谢谢。

【问题讨论】:

    标签: arrays excel array-formulas


    【解决方案1】:

    你试过 Nz() 吗?用它封装你当前的代码并试一试。我自己在这里和那里遇到了空白/空值问题。

    另一个选项可能是 IIF() 语句。但这可能不会达到你想要的效果。以下是参考链接:

    新西兰:http://www.techonthenet.com/access/functions/advanced/nz.php

    IIF:http://www.techonthenet.com/access/functions/advanced/iif.php

    【讨论】:

    • PS - 您可以在控件中使用这两种方法,而无需打开 VBA 模块。
    • 很确定 OP 使用的是 Excel,而不是 Access,并且这些公式都不是有效的 Excel 公式。
    【解决方案2】:

    您不需要VBA,甚至不需要数组公式。您可以将 SUMPRODUCT()通配符一起使用。

    假设我们有:

    A2中输入:

    =IF(A1="","*",A1)
    

    然后复制过去。这将显示一个星号或上面的值。

    然后使用:

    =SUMPRODUCT(ISNUMBER(SEARCH(A2,G1:G10,1))*ISNUMBER(SEARCH(B2,H1:H10,1))*ISNUMBER(SEARCH(C2,I1:I10,1)))
    

    这是一种让 SUMPRODUCT() 接受星号作为通配符的方法:

    【讨论】:

    • 这似乎是一个比我最终想出的更优雅的解决方案。我将不得不更多地使用它,因为我还没有完全弄清楚它是如何工作的,我想知道它是否适用于数值。如果 J 列是数字,我想根据 G、H 中的值对它们执行 SUM、AVERAGE、MAX 和 MIN,我会这样做吗?这就是我最终想出的: =SUM(IF(IF(ISBLANK($A3),region"x",region=$A3)*IF(ISBLANK($C3),sector"x",扇区=$C3)*IF(ISBLANK($D3),gender"x",gender=$D3),population)) 其中“x”是一个虚拟变量,以“真”值返回
    • 可能能够使用 AutoFilter 获得此类功能,并使用 SUBTOTAL() 分析结果功能。
    • 另见stackoverflow.com/questions/31159748/…,这似乎是几个小时前提出的相同问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-08
    • 2018-11-20
    • 1970-01-01
    相关资源
    最近更新 更多