【问题标题】:Excel 2016 count unique values in a range based on more than one rangeExcel 2016 基于多个范围计算一个范围内的唯一值
【发布时间】:2019-10-22 09:22:09
【问题描述】:

我正在尝试计算给定日期范围内订单号的唯一出现次数,我已经使用下面的代码成功实现了这一点;

A 列 = 日期

B 列 = 订单号

单元格 W3 = 从日期

单元格 X3 = 迄今为止

{=SUMPRODUCT(IF((A$2:A$10000<=X3)*(A$2:A$10000>=W3),
1/COUNTIFS(A$2:A$10000, "<="&X3,A$2:A$10000, ">="&W3,
B$2:B$10000,B$2:B$10000), 0))}

我的问题是我想添加另一个保存在 U 列中的条件,该值是“F”以供争论。我试图将这个公式分解成一口大小的块,以准确理解它在做什么,但它超出了我的范围。

正如您从屏幕截图中看到的那样,在单元格 W3 到单元格 X3 中显示的日期范围之间有 7 个唯一的订单号,根据我的公式,结果显示在单元格 Y3 中。

我希望添加另一个公式,该公式对 U 列中任何值为“F”的行计算相同的数据集,结果将是 1,因为单元格 Z3 以红色突出显示,这是我手动输入的。

谁能给点建议。

【问题讨论】:

  • 请在A、B、U列和W3、X3单元格中提供一些示例数据,并说明预期的输出和背后的逻辑。
  • 谢谢特里,我已经添加了屏幕截图和解释

标签: excel-formula


【解决方案1】:

单元格 H3 中的公式:

=SUMPRODUCT(IF((A$2:A$10000<=F3)*(A$2:A$10000>=E3)*(C$2:C$10000=G3),
1/COUNTIFS(A$2:A$10000,"<="&F3,A$2:A$10000,">="&E3,C$2:C$10000,"="&G3,
B$2:B$10000,B$2:B$10000), 0))

【讨论】:

  • 你可能要提到上面的公式需要按Ctrl+Shift+Enter来确认:)
【解决方案2】:

这是使用本文方法的另一种方法:Count unique values among duplicates

假设您有以下命名范围

  • DateList 是日期列中的数据;
  • OrderList 是您的订单号列中的数据;
  • Col_U 是包含您的额外条件的列;
  • FromDFrom Date
  • ToDTo Date

使用以下公式返回给定日期范围和条件F中订单号的唯一计数:

=SUMPRODUCT(--(FREQUENCY(OrderList*(DateList>=FromD)*(DateList<=ToD)*(Col_U="F"),OrderList*(DateList>=FromD)*(DateList<=ToD)*(Col_U="F"))>0))-1

困难的部分是理解使用这个公式=OrderList*(DateList&gt;=FromD)*(DateList&lt;=ToD)*(Col_U="F")找到过滤范围的方法。

然后使用FREQUENCY(filtered_range,filtered_range)&gt;0 找出有多少订单号在过滤范围内多次出现,最后使用SUMPRODUCT 返回总数。我公式末尾的-1 是取出过滤范围内返回的重复0 的计数。

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

【讨论】:

  • 嗨,特里,我从未使用过 FREQUENCY ,但它确实有效,谢谢。我需要好好看看这个函数。
  • @Prospidnick 不用担心,如果有任何问题,请随时询问 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-16
  • 2019-01-02
  • 2019-12-04
  • 2016-08-13
  • 1970-01-01
  • 2017-05-21
  • 1970-01-01
相关资源
最近更新 更多