【问题标题】:How to determine the maximum discount that a threshold percentage of a population received如何确定某个阈值百分比的人口获得的最大折扣
【发布时间】:2017-12-21 06:21:41
【问题描述】:

我试图找出什么公式可以帮助我找到某个阈值百分比的人口获得的最大折扣。

例如,在下表中,我想知道至少 30% 的人口获得的最大折扣。

Population   Discount
400          25%
3000         24%
2000         23%
1000         22%
850          20%
400          19%
350          18%
350          15%
1500         13%
450          12%
700          11%
3000         5%
7000         3%
6000         2%

如果数据按折扣金额降序排列,这很容易。这很简单,只需从顶部向下累积人口百分比,直到达到至少 30%,然后检查折扣百分比。

在上表中,第 8 行至少达到 30% 的人口(占总人口的 30.93%),因此至少 30% 的人口获得的最大折扣为 15%。

但是,如果数据不按该顺序怎么办?如果不能先按最高折扣排序,我怎么能从下表中得到相同的答案?

People   Discount
700      11%
3000     24%
3000     5%
1000     22%
6000     2%
400      25%
350      18%
350      15%
1500     13%
450      12%
850      20%
400      19%
7000     3%
2000     23%

【问题讨论】:

  • 我强烈建议对数据进行排序,这会让生活变得更轻松。如果保持当前顺序对您很重要,请添加一个带编号的辅助列,以便按该列排序会将您的数据恢复为原始格式。
  • 谢谢,卢克拉格。我遇到的问题是实际源表比上面的示例更复杂,并且按另一列排序,这使得最终用户更容易使用数据。不幸的是,有几个这样的表,每次折扣和人口数量发生变化时,我都必须重做这项任务,首先按最高折扣更改排序顺序,然后找到 X% 人口的最大折扣。我希望找到一种方法来消除该任务的单调性。
  • 如果您愿意为此编写 VBA 代码,那将是很有可能的。
  • Power Query 可能是排序的另一种选择。

标签: excel excel-formula


【解决方案1】:

借助辅助列,我能够做到这一点。

定义一个帮助列,给出有多少人获得了该折扣或更高的折扣:

=SUMIFS($A$2:$A$15,$B$2:$B$15,">="&B2)

(假设您的数据在 A1:B15 中)。这给了你

People   Discount  Helper
700      11%       11000
3000     24%       3400
3000     5%        14000
1000     22%       6400
6000     2%        27000
400      25%       400
350      18%       8000
350      15%       8350
1500     13%       9850
450      12%       10300
850      20%       7250
400      19%       7650
7000     3%        21000
2000     23%       5400

现在您要在 B 列中找到最大折扣,使 C 列中的值至少占总人数的 30%。

=MAXIFS(B2:B15,C2:C15,">="&30%*SUM(A2:A15))

如果您愿意,可以将 30% 硬编码为包含该参数的单元格引用。

【讨论】:

  • MAXIFS 在 Excel 2016 及更高版本中可用。以前版本的 Excel 可能需要不同的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
相关资源
最近更新 更多