【问题标题】:Counting unique values among a filtered subset计算过滤子集中的唯一值
【发布时间】:2019-09-18 11:05:53
【问题描述】:

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

例如,如果我有 Reports 数据集,我想输出 ReportCount 信息。我对使用COUNTIFS 进行了一些思考,但到目前为止还没有取得太大的成功。我不承诺使用单独的报告 ID,所以如果有帮助的话,我很乐意使用不同的方法。

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

谁能给点建议?

【问题讨论】:

  • 没错,您的问题是哪一个?您有一个报告表和一个报告计数表。
  • 你需要什么?一种按天计算报告的公式?乘船?...
  • 澄清问题。目的是计算每艘船至少提交一份报告的天数。 :-)

标签: excel excel-formula


【解决方案1】:

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

不需要报告 ID 列。

在 Power 查询编辑器中,只需

  • Group By Voyage 并选择 Count Distinct Rows 进行操作

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"

来源

结果

【讨论】:

  • 太好了,干杯。我现在已经有了一个基于大卫下面建议的版本,但看起来 Power Query 将非常有用,并且从长远来看可能是一个更有效的解决方案。谢谢!
  • @AndrewPerry 如果源数据发生变化,它很容易更新。顺便说一句,我做了一个不需要的手术。根本不需要更改 Day 数据类型。那是我正在考虑的另一种方法,我忽略了删除该步骤。我已经编辑了我的答案以排除它。
【解决方案2】:

试试这个:

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

我假设您拥有 Ship+Date 的单元格从 G4 开始。 H4 上的此公式并向下拖动将报告您的列中唯一的值。 (所以如果其中一个重复,它只会显示一次)

有了这个辅助栏,你可以使用COUNTIF,你会得到那些日子。

希望对你有帮助

【讨论】:

  • 现在试过了,但它只是给了我一个满是 0 的列。不幸的是,我不太擅长索引匹配,所以我很难找出哪里出错了。
  • 我认为你让我走上了正确的道路。我最终使用了(这里调整以适应整个工作表中的范围)=IF(COUNTIF($AO$2:$AO2, [@TotID])=1, 1, 0) - 这就是诀窍。谢谢!
【解决方案3】:

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

【讨论】:

  • 谢谢 - 不幸的是,因为每个发现都作为单独的行项目提交,这将输出单个发现的数量而不是船舶提交报告的天数。这就是让它变得棘手的原因...... :-)
猜你喜欢
  • 1970-01-01
  • 2013-03-26
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多