Excel 计算由另一个值索引的范围内的唯一值

Excel 计算由另一个值索引的范围内的唯一值,excel,indexing,excel-formula,count,Excel,Indexing,Excel Formula,Count,我有一个按建筑物名称和社区排序的紧急类型列表。每个建筑名称有5种紧急类型,每个社区有不同数量的建筑。我试图返回与每个社区相关联的建筑数量 我试过这个公式 =SUMPRODUCT(1/COUNTIF(BuildingCostsTbl[Building Name - Click to go to Sheet],BuildingCostsTbl[Building Name - Click to go to Sheet]&"")) 但它只返回表中的建筑总数,不按社区计算。我也尝试过在这个函数中

我有一个按建筑物名称和社区排序的紧急类型列表。每个建筑名称有5种紧急类型,每个社区有不同数量的建筑。我试图返回与每个社区相关联的建筑数量

我试过这个公式

=SUMPRODUCT(1/COUNTIF(BuildingCostsTbl[Building Name - Click to go to Sheet],BuildingCostsTbl[Building Name - Click to go to Sheet]&""))
但它只返回表中的建筑总数,不按社区计算。我也尝试过在这个函数中使用MATCH函数来缩小COUNTIF函数的范围标准,但是我不断地得到我不理解的错误

下面是我的excel工作表中的快照,说明了我希望做的事情

Excel快照

我试图使用的用于缩小COUNTIF查找范围的匹配公式是

=MATCH(H9,BuildingCostsTbl[Community])

以下是一个基于handy source的小示例:

D2
中包含上述样本数据的公式:

=SUM(--(FREQUENCY(IF($A$2:$A$9=C2,MATCH($B$2:$B$9,$B$2:$B$9,0)),ROW($B$2:$B$9)-1)>0))
注意:这是一个数组公式,需要通过CtrlShift Center确认


当您使用表格时,您可以根据自己的需要进行调整。

以下是一个基于handy source的小示例:

D2
中包含上述样本数据的公式:

=SUM(--(FREQUENCY(IF($A$2:$A$9=C2,MATCH($B$2:$B$9,$B$2:$B$9,0)),ROW($B$2:$B$9)-1)>0))
注意:这是一个数组公式,需要通过CtrlShift Center确认


当您使用表时,您可以根据自己的需要进行调整。

您可以使用透视表

鉴于这些数据:

插入数据透视表
并选择
将此数据添加到数据模型

  • 社区到行
  • 将名称转换为值
  • 价值成本
编辑建筑名称的值字段设置:

  • 不同计数
  • 更改列名
编辑“成本”列的列名


您可以使用透视表

鉴于这些数据:

插入数据透视表
并选择
将此数据添加到数据模型

  • 社区到行
  • 将名称转换为值
  • 价值成本
编辑建筑名称的值字段设置:

  • 不同计数
  • 更改列名
编辑“成本”列的列名


最简单的方法是使用透视表
。如果选择“添加到数据模型”
,则不同计数将是选项之一。您还可以使用透视表来计算每个社区的成本。最简单的方法是使用透视表。如果选择“添加到数据模型”,则不同计数将是选项之一。您还可以使用数据透视表来计算每个社区的成本。是的,数据透视表是最简单的,暂时忘记它:S@JvdV取决于OP对工作表的动态要求。它更简单,但如果更新数据,则需要更新数据透视表。是的,数据透视表最简单,暂时忘记它:S@JvdV取决于OP对工作表的动态要求。它更简单,但是如果你更新数据,你需要更新数据透视表。谢谢你的回复,我尝试了你的公式,并对其进行了修改,所有操作都有效,除了Aroland的“建筑物数量”列中,公式应该输出2,但它只给出了1的值。这里是一个显示精确公式和参考的屏幕截图链接@Marmiketin,你需要按照答案中的解释,以数组的形式输入这个公式。请尝试这样做。是的,我这样做了,在公式栏中,它用两端弯曲的括号显示出来,如{=SUM(-(频率(如果(BuildingCostBl[Community]=H9,匹配(BuildingCostBl[Building Name],BuildingCostBl[Building Name],0)),行(BuildingCostBl[Building Name])-1>0]),但仍不计算Aroland下的2栋建筑。我用数据透视表做了同样的事情,Aroland是2。啊,对了,@Marmiketin,在你的例子中,你从第9行开始计算公式,所以你需要减去8,而不是1。那就行了;)真是太棒了,我想知道-1是干什么用的。感谢您的帮助。感谢您的回复,我尝试了您的公式并对其进行了修改,除Aroland的“建筑物数量”列外,其他所有内容均有效。该公式应输出2,但其值仅为1。这里是一个显示精确公式和参考的屏幕截图链接@Marmiketin,你需要按照答案中的解释,以数组的形式输入这个公式。请尝试这样做。是的,我这样做了,在公式栏中,它用两端弯曲的括号显示出来,如{=SUM(-(频率(如果(BuildingCostBl[Community]=H9,匹配(BuildingCostBl[Building Name],BuildingCostBl[Building Name],0)),行(BuildingCostBl[Building Name])-1>0]),但仍不计算Aroland下的2栋建筑。我用数据透视表做了同样的事情,Aroland是2。啊,对了,@Marmiketin,在你的例子中,你从第9行开始计算公式,所以你需要减去8,而不是1。那就行了;)真是太棒了,我想知道-1是干什么用的。谢谢你的帮助。