最小化指定数量的小计组的差异[关闭]

Posted

技术标签:

【中文标题】最小化指定数量的小计组的差异[关闭]【英文标题】:Minimizing differences in specified number of subtotal groups [closed] 【发布时间】:2014-12-30 00:39:47 【问题描述】:

我有这样的数据:

A       B   C   D    
Book1   1   49  
        2   37  
        3   31  
        4   46  163
        5   35  
        6   47  
        7   40  
        8   38  160
        9   45  
        10  25  
        11  38  
        12  29  
        13  25  
        14  18  180

其中 D 列包含 C 列中(可变)项目数的小计。

我想要完成的是,给定一组这些小计,让每个小计都尽可能接近它们的平均值(这对于小样本可能是正确的,但在较大的表中不一定是这样)。换句话说,如果 C 列中的项目总数为 15,000,我想将它们分成 90 个部分,那么这些部分中的每一个都应尽可能接近 166.67 (15,000/90)。

ColumnC的顺序不能改变。

这如何实现? (如果需要,VBA 会为我工作。)

【问题讨论】:

@pnuts:是的,因为我必须保持书籍(A 栏)和章节(B 栏)的顺序。 【参考方案1】:

这只是大概的:

 =IF(SUM(C$2:C2)-SUM(D$1:D1)>SUM(C:C)/3,SUM(C$2:C2)-SUM(D$1:D1),"")  

但可能需要绝对最低限度的 VBA 或类似的东西。将3 替换为所需的零件数。

【讨论】:

谢谢(一旦我有足够的代表会投票)。我不介意 VBA 的答案,如果这样更准确的话。 实际上,在我的数据集上尝试这个(将 3 替换为 90)并不能完全奏效 - 我最终得到 83 个小计。

以上是关于最小化指定数量的小计组的差异[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

51Nod1222 最小公倍数计数

silverlight使用小计(先做记录后续整理)

在不知道输入数量的情况下计算最小、最大和平均输入值的最佳方法? [关闭]

具有最小尺寸度量的 K-means 算法变化

WPF编程怎么激活指定窗口?

将一个数组划分为 K 个差异最小的子数组