Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 基于多个数组标准计算表中的行数_Arrays_Excel - Fatal编程技术网

Arrays 基于多个数组标准计算表中的行数

Arrays 基于多个数组标准计算表中的行数,arrays,excel,Arrays,Excel,我试图根据表中不同列中的多个条件计算表中的行数。但是,公式中没有直接的标准;它们是我想引用的数组(而不是直接在公式中列出它们) 范围表示例: Group Status a 1 b 4 b 6 c 4 a 6 d 5 d 4 a 2 b 2 d 3 b 2 c 1 c 2 c 1 a 4 b 3 标准/

我试图根据表中不同列中的多个条件计算表中的行数。但是,公式中没有直接的标准;它们是我想引用的数组(而不是直接在公式中列出它们)

范围表示例:

Group   Status
a       1
b       4
b       6
c       4
a       6
d       5
d       4
a       2
b       2
d       3
b       2
c       1
c       2
c       1
a       4
b       3
标准/阵列示例:

group
a
b

status
1
2
3
如果我只在该表中的一个范围(1列)中进行了一次数组搜索,我就能够做到这一点:

{=SUM(COUNTIFS(data[Group],group[group]))}
按预期返回“9”(=数据表组列中与组[group]中的任何值匹配的行的总和)

但是,如果我添加第二个不同的范围和不同的数组,则会得到错误的结果:

{=SUM(COUNTIFS(data[Group],group[group], data[Status],status[status]))}
返回“3”,但应返回“5”(=状态列中有1、2或3且组列中有a或b的行的总和)

我搜索并搜索了与使用sumproduct或在公式中定义数组有关的各种想法,而不是将整个公式分类为数组,但我无法通过这些方法获得预期的结果


谢谢您的帮助。

因为您的
状态
标准是不同数量的值(组有2个值,而
状态
有3个值),我不确定您是否可以用一个公式来实现这一点。我所知道的最好的方法是使用一个helper列(如果愿意,可以隐藏)

将此数组公式放在助手列中,并向下复制数据的长度(必须使用Ctrl+Shift+Enter确认数组公式):


然后使用:
=COUNTIF(helpercolumn,TRUE)
获取计数您可以使用稍微不同的方法,使用Power Query/Power Pivot

将表命名为
数据
状态
,然后创建以下查询,名为
过滤数据

let
    tbData = Excel.CurrentWorkbook(){[Name="Data"]}[Content],
    tbGroup = Excel.CurrentWorkbook(){[Name="Group"]}[Content],
    tbStatus = Excel.CurrentWorkbook(){[Name="Status"]}[Content],
    #"Merged Group" = Table.NestedJoin(tbData,{"Group"},tbGroup,{"Group"},"tbGroup",JoinKind.Inner),
    #"Merged Status" = Table.NestedJoin(#"Merged Group",{"Status"},tbStatus,{"Status"},"Merged Status",JoinKind.Inner),
    #"Removed Columns" = Table.RemoveColumns(#"Merged Status",{"tbGroup", "Merged Status"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Removed Columns",{{"Status", type number}})
in
    #"Changed Type"
仅作为连接加载到
,并勾选
加载到数据模型

现在创建一个DAX度量:

Status Sum:=SUM ( 'Filtered Data'[Status] )
然后,您可以在工作表上使用以下公式,获得符合
状态
表中指定条件的行的状态值之和:

=CUBEVALUE("ThisWorkbookDataModel","[Measures].[Status Sum]")

只需刷新数据连接即可更新值。

最终我想转到PBi,谢谢您的建议。我现在很抱歉,但我会尽快检查您的解决方案。非常感谢。谢谢你,泰格拉瓦塔。我现在很忙,一有机会我就会试试。工作很有魅力,我理解你通过和/或帮助栏解决挑战的方式。再次感谢你!
=CUBEVALUE("ThisWorkbookDataModel","[Measures].[Status Sum]")