Excel 计算筛选子集中的唯一值

Excel 计算筛选子集中的唯一值,excel,excel-formula,Excel,Excel Formula,我有一个电子表格,其中包含来自船舶的检查报告,并单独报告差异;因此,一天中出现多个差异将导致多个报告。我希望能够检查船只提交报告的天数,但由于列表中有数百个航次,通常用于计算唯一值的功能已被证明不适用。每个日报都有一个基于其航次代码和航次天数的报告ID 例如,如果我有报告数据集,我想输出报告计数信息。我曾想过使用COUNTIFS,但迄今为止没有太大成功。我不打算使用单独的报表ID,所以如果有帮助的话,我很乐意使用不同的方法 那么,问题是我可以在ReportCount[Reports]中使用什么公

我有一个电子表格,其中包含来自船舶的检查报告,并单独报告差异;因此,一天中出现多个差异将导致多个报告。我希望能够检查船只提交报告的天数,但由于列表中有数百个航次,通常用于计算唯一值的功能已被证明不适用。每个日报都有一个基于其航次代码和航次天数的报告ID

例如,如果我有报告数据集,我想输出报告计数信息。我曾想过使用
COUNTIFS
,但迄今为止没有太大成功。我不打算使用单独的报表ID,所以如果有帮助的话,我很乐意使用不同的方法

那么,问题是我可以在
ReportCount[Reports]
中使用什么公式来计算每次航行提交报告的天数


有人能提供建议吗?

假设您在单元格A2中有航次值B109,并且摘要报告从单元格D3开始,包含航次号B109,E3包含计数,那么您可以在E3中使用=COUNTIF($A2:$A31,D2)并拖放所有唯一的航次值 请参阅随附的快照


假设您在单元格A2中有航次值B109,并且摘要报告从单元格D3开始,包含航次编号B109,E3包含计数,那么您可以在E3中使用=COUNTIF($A2:$A31,D2)并拖放所有唯一的航次值 请参阅随附的快照

试试这个:

=IFERROR(索引($G$4:$G$1000,匹配(0,索引(COUNTIF($H$4:H4,$G$4:$G$1000),0,0),0)),“”)

我假设当你有船+日期时,单元格从G4开始。H4上的此公式并向下拖动将报告列中唯一的值。(因此,如果其中一个重复出现,则仅显示一次)

有了这个辅助列,您可以使用
COUNTIF
,您将获得这些天

希望有帮助

试试这个:

=IFERROR(索引($G$4:$G$1000,匹配(0,索引(COUNTIF($H$4:H4,$G$4:$G$1000),0,0),0)),“”)

我假设当你有船+日期时,单元格从G4开始。H4上的此公式并向下拖动将报告列中唯一的值。(因此,如果其中一个重复出现,则仅显示一次)

有了这个辅助列,您可以使用
COUNTIF
,您将获得这些天

希望对您有所帮助

您可以使用Power Query(Excel 2010+)创建“不同”行的计数

不需要报告ID列

在Power查询编辑器中,只需

  • 航程分组,然后为操作选择
    计数不同行

M代码

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Grouped Rows" = Table.Group(Source, {"Voyage"}, {{"Count", each Table.RowCount(Table.Distinct(_)), type number}})
in
    #"Grouped Rows"
来源

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Grouped Rows" = Table.Group(Source, {"Voyage"}, {{"Count", each Table.RowCount(Table.Distinct(_)), type number}})
in
    #"Grouped Rows"

结果

您可以使用Power Query(Excel 2010+)创建“不同”行的计数

不需要报告ID列

在Power查询编辑器中,只需

  • 航程分组,然后为操作选择
    计数不同行

M代码

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Grouped Rows" = Table.Group(Source, {"Voyage"}, {{"Count", each Table.RowCount(Table.Distinct(_)), type number}})
in
    #"Grouped Rows"
来源

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Grouped Rows" = Table.Group(Source, {"Voyage"}, {{"Count", each Table.RowCount(Table.Distinct(_)), type number}})
in
    #"Grouped Rows"

结果


准确地说,您的问题是哪一个?您有一个报告表和一个报告计数表。您需要什么?按天计算报告的一个公式?乘船?…在问题中澄清。目的是统计每艘船至少提交一份报告的天数。:-)没错,你的问题是哪一个?您有一个报告表和一个报告计数表。您需要什么?按天计算报告的一个公式?乘船?…在问题中澄清。目的是统计每艘船至少提交一份报告的天数。:-)谢谢-不幸的是,由于每个发现都作为单独的行项目提交,因此将输出单个发现的数量,而不是船舶提交报告的天数。这就是让事情变得棘手的原因…:-)谢谢-不幸的是,由于每个发现都作为单独的行项目提交,因此将输出单个发现的数量,而不是船舶提交报告的天数。这就是让事情变得棘手的原因…:-)现在尝试了,但它只给了我一列0。不幸的是,我在索引比赛中表现不好,所以我很难找出哪里出了问题。我想你让我走上了正确的道路。我最终使用了(这里调整以适应整张表中的范围)
=IF(COUNTIF($AO$2:$AO2,[@TotID])=1,1,0)
——这就成功了。谢谢现在尝试了,但它只给了我一列0。不幸的是,我在索引比赛中表现不好,所以我很难找出哪里出了问题。我想你让我走上了正确的道路。我最终使用了(这里调整以适应整张表中的范围)
=IF(COUNTIF($AO$2:$AO2,[@TotID])=1,1,0)
——这就成功了。谢谢太好了,干杯。我现在已经有了一个基于David建议的版本,但是看起来Power Query非常有用,从长远来看可能是一个更有效的解决方案。谢谢@如果源数据发生更改,它很容易更新。顺便说一句,我做了一次不必要的手术。根本不需要更改日期数据类型。这是我正在考虑的另一种方法,我忽略了删除这一步骤。我编辑了我的答案,排除了这一点。太好了,干杯。我现在已经有了一个基于David建议的版本,但是看起来Power Query非常有用,从长远来看可能是一个更有效的解决方案。谢谢@如果源数据发生更改,它很容易更新。顺便说一句,我做了一次不必要的手术。没有必要更改D