在Excel中,我有一个值列表(按随机顺序),我想找出哪些值占总值的75%;IidoEe.如果将最大值加在一起,我应该包括哪些值才能达到总数的75%(从最大到最小)。我想找到“截止值”,IidoEe.最小的数字包括在一组值中(组合起来的总和达到75%)。但是,我想这样做而不首先排序我的数据。
考虑下面的例子,在这里我们可以看到,截止点是在“公司6”,这对应于一个“截止值”750。
我所拥有的数据没有排序,因此我只想弄清楚“截止值”应该是什么,因为这样我就知道如果行中的金额大于该数字,则它是构成总数75%的值组的一部分。
答案可以是Excel或VBA;但我希望避免必须先对表进行排序,并且希望避免在每行中进行计算(因此最好是可以计算它的单个公式)。
| 行数|金额|百分比|运行总计|
| - ------|- ------|- ------|- ------|
| 公司1|一千|百分之十二点九|百分之十二点九|
| 二连|九五零|百分之十二点三|二十五点二|
| 三连|九百|百分之十一点六|三十六点八|
| 四连|八五零|百分之十一|四十七点七|
| 五连|八百|百分之十点三|58.1%|
| 六连|七百五十|九点七|六十七点七|
| 七连|七百|百分之九|七十六点八|
| 八连|六百五十|百分之八点四|八十五点二|
| 九连|六百|百分之七点七|百分之九十二点九|
| 十连|五百五十|百分之七点一|100.0%|
| 共计|七千七百五十人|||
| 占总数的75%|五千八百一十三人|||
编辑:我最初的想法是使用百分位数/四分位数函数,然而这并没有给我预期的结果。我一直试图使用percentrank,sort,sum和aggregate的组合-但不能想出如何将它们组合起来,以获得我需要的结果。
在本例中,我希望包括公司1到6,因为这些公司总计为5250,因此要包括的最小数字为750。如果添加公司7,则会超过5813(即75%)。
3条答案
按热度按时间xienkqul1#
VBA气泡排序-不更改工作表。
fsi0uk1n2#
所以,按照我的建议简单地设置它。
您可以添加或更改约束条件,因为您希望得到您需要的结果-我选择二进制开始,但您可以限制为整数和1,2或3,例如。
我包括了我使用的roundup()以及sumproduct。
我使用二进制,因为它给出了一个明确的指示,选择,整数值也将做同样的事情。
pgvzfuti3#
运行总计的最小值...
LAMBDA
版本的以下部分定义名称,例如GetCutOffCompany
: