在过滤的子集中计数唯一值

时间:2019-09-18 11:05:53

标签: excel excel-formula

我有一个电子表格,其中包含来自船舶的检验报告,并分别报告差异。结果,一天中存在多个差异将产生多个报告。我希望能够检查船只提交报告的天数,但是由于列表中有数百条航程,因此计算唯一值的常用功能被证明是不合适的。每个每日报告都有一个基于其航行代码和航行日期的报告ID。

例如,如果我有 Reports 数据集,我想输出 ReportCount 信息。我曾经考虑过使用COUNTIFS,但到目前为止并没有取得太大的成功。我不致力于使用单个报告ID,因此,如果有帮助,我很高兴使用其他方法。

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

Image showing relationship between reports and report counter

有人可以建议吗?

3 个答案:

答案 0 :(得分:1)

尝试这个:

=IFERROR(INDEX($G$4:$G$1000, MATCH(0, INDEX(COUNTIF($H$4:H4, $G$4:$G$1000), 0, 0), 0)), "")

我假设您拥有“船期+日期”时的单元格从G4开始。在H4上向下拖动该公式将报告列中唯一的值。 (因此,如果重复其中之一,则只会显示一次)

使用此辅助列,您可以使用COUNTIF,然后您会得到相应的日子。

希望有帮助

答案 1 :(得分:1)

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

不需要“报告ID”列。

在Power查询编辑器中,只需

  • Group By航行,然后选择Count Distinct Rows作为操作

enter image description here

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"

来源

enter image description here

结果

enter image description here

答案 2 :(得分:0)

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

enter image description here