Excel formula 需要帮助按月计算列中重复ID的次数吗
完成这个公式我有点困难。我需要计算有2个以上请求的客户数量(我可以通过计算客户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) 仅供参
我目前使用的公式:=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,然后您应该具有:
您可以从屏幕截图中看到ID2
的可见性为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来返回总和。。。我想得太多了。。。无论如何,我已经用公式方法更新了我的解决方案,希望它也有帮助。:)