Excel formula 需要帮助按月计算列中重复ID的次数吗

Excel formula 需要帮助按月计算列中重复ID的次数吗,excel-formula,Excel Formula,完成这个公式我有点困难。我需要计算有2个以上请求的客户数量(我可以通过计算客户ID在查询结果中重复的次数来计算)。问题是我不能按月过滤结果 我目前使用的公式:=IF(COUNTIF($C$3:$C$10;C3)>1;1/COUNTIF($C$3:$C$10;C3);0)切换到COUNTIFS并添加月份: =IF(COUNTIFS($C$3:$C$10,C3,$D$3:$D$10,D3)>1,1/COUNTIFS($C$3:$C$10,C3,$D$3:$D$10,D3),0) 仅供参

完成这个公式我有点困难。我需要计算有2个以上请求的客户数量(我可以通过计算客户ID在查询结果中重复的次数来计算)。问题是我不能按月过滤结果


我目前使用的公式:=IF(COUNTIF($C$3:$C$10;C3)>1;1/COUNTIF($C$3:$C$10;C3);0)

切换到COUNTIFS并添加月份:

=IF(COUNTIFS($C$3:$C$10,C3,$D$3:$D$10,D3)>1,1/COUNTIFS($C$3:$C$10,C3,$D$3:$D$10,D3),0)


仅供参考,无需助手栏即可完成此操作:

=SUM(IF(COUNTIFS($C$3:$C$10,$C$3:$C$10,$D$3:$D$10,$D$3:$D$10)>1,1/COUNTIFS($C$3:$C$10,$C$3:$C$10,$D$3:$D$10,$D$3:$D$10),0))
这是一个数组公式,需要在退出编辑模式时使用Ctrl-Shift-Enter而不是Enter确认


如果我理解正确,您有一个表格,其中一列显示每个请求的客户ID,另一列显示提出请求的月份编号

您希望能够筛选该表,并返回基于筛选的结果提出多个请求的客户的总数

在您的帖子中,您提到您在过滤
月份时没有得到正确的计数,但在您的屏幕截图中,您在过滤
ID时似乎没有得到正确的计数

无论如何,根据当前公式,筛选表中的计数不正确

这里有一些解决方案可以处理,但在您的情况下,您不只是计算
ID
,而是计算出现多次的
ID
,如果过滤
月份
,则外观可能会有所不同

如果您只是筛选
ID
,那么我链接的上述问题的答案也应该回答您的问题。如果您想要一个用于过滤
ID
month
或两者的解决方案,则需要一个辅助列来检测过滤行的可见性,然后在原始公式中使用COUNTIFS而不是COUNTIF来考虑辅助列

如上所示,我添加了一个名为可见性的辅助列,以确定行是否已过滤。公式是:

=AGGREGATE(3,5,C3)>0
对于所有可见的行,它将返回
TURE
,对于隐藏的行,它将返回
FALSE
(尽管它在筛选表中不可见)。在上面的例子中,我在
ID
列中过滤掉了
2

添加“帮助器”列后,可以按如下所示重写原始公式:

=IF(COUNTIFS($C$3:$C$10;C3;Helper_Column;TRUE)>1;1/COUNTIF($C$3:$C$10;C3;Helper_Column;TRUE);0)
电源查询方法

下面是我在
#powerquery
中为那些可能感兴趣的人所做的

请参阅此部分,了解如何在您的Excel版本上使用Power Query。我的演示使用的是Excel 2016

这种方法还需要使用辅助列
来显示筛选行的可见性。然后使用
Data
选项卡下的From Table功能将源表添加到Power Query Editor,然后您应该具有:

您可以从屏幕截图中看到ID
2
的可见性为
FALSE

接下来,过滤掉Visibility列中的所有
FALSE
,然后应该有类似于过滤源表的内容:

接下来,使用
Transform
选项卡下的groupby功能来计算每个ID的出现次数

接下来,过滤为
>1
的计数,您应该具有以下内容:

接下来,使用
Transform
选项卡下的Statistics下的Count Values功能来计算
ID
的数量,您应该返回
2
,如下所示:

最后,关闭并加载结果到新工作表(默认情况下)或带有源表的当前工作表(需要修改查询设置),如下所示:

如果我将源表中的过滤器更改为显示所有
ID
,但排除
2
月份的
,我只需右键单击输出表并选择刷新即可获得更新的结果

以下两篇文章暗示了在Power Query中使用可见性列,需要对此给予赞扬:

以下是Power Query M幕后代码,仅供参考。所有步骤均使用内置函数执行,无需高级编码

let
    Source = Excel.CurrentWorkbook(){[Name="Table6"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}, {"month", Int64.Type}}),
    #"Filtered Rows1" = Table.SelectRows(#"Changed Type", each [Visibility] = true),
    #"Grouped Rows" = Table.Group(#"Filtered Rows1", {"ID"}, {{"Count", each Table.RowCount(_), type number}}),
    #"Filtered Rows" = Table.SelectRows(#"Grouped Rows", each [Count] > 1),
    #"Calculated Count" = List.NonNullCount(#"Filtered Rows"[ID])
in
    #"Calculated Count"

如果你有任何问题,请告诉我。干杯:)

感谢您接受我的答案作为解决方案。我刚刚意识到,一旦添加了helper列以显示过滤行的可见性,您就可以简单地使用原始公式列中的COUNTIFS来返回总和。。。我想得太多了。。。无论如何,我已经用公式方法更新了我的解决方案,希望它也有帮助。:)