Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 计算一组适合特定数字的数字的最佳分布_Math_Google Sheets_Numbers_Spreadsheet - Fatal编程技术网

Math 计算一组适合特定数字的数字的最佳分布

Math 计算一组适合特定数字的数字的最佳分布,math,google-sheets,numbers,spreadsheet,Math,Google Sheets,Numbers,Spreadsheet,我有一个我认为很有趣的问题,关于谷歌表单和一些数学,下面是一个场景: 4个数字如下: 64.20 | 107 | 535 | 1070 一个参考号,其中先前的数字需要拟合,保留最小可能的剩余,同时设置每个数字拟合参考号的次数。例如,我们可以说参考号如下: 806.45 问题是: 我在计算这4个数字在参考数字中的匹配次数,从高到低的数字开始,如下所示: |1070 |=>=IF(E12/((I15+J15)+IF(H17,K17,0)+IF(H19,K19,0))>0,取整(E12/((I15+J

我有一个我认为很有趣的问题,关于谷歌表单和一些数学,下面是一个场景:

4个数字如下:

64.20 | 107 | 535 | 1070

一个参考号,其中先前的数字需要拟合,保留最小可能的剩余,同时设置每个数字拟合参考号的次数。例如,我们可以说参考号如下:

806.45

问题是:

我在计算这4个数字在参考数字中的匹配次数,从高到低的数字开始,如下所示:

|1070 |=>
=IF(E12/((I15+J15)+IF(H17,K17,0)+IF(H19,K19,0))>0,取整(E12/((I15+J15)+IF(H17,K17,0)+IF(H19,K19,0)),0)

|535 |=>
=IF(H15>0,舍入((E12-K15-IF(H17,K17,0)-IF(H19,K19,0))/(I14+J14)),舍入(E12/((I14+J14)+IF(H17,K17,0)+IF(H19,K19,0))

|107 |=>
=IF(或(H15>0,H14>0),舍入((E12-K15-K14-IF(H17,K17,0)-IF(H19,K19,0))/(I13+J13)),舍入((E12-IF(H17,K17,0)-IF(H19,K19,0))/(I13+J13))。

|64.20 |=>
=IF(或(H15>0,H14>0,H13>0),舍入((E12-K15-K14-K13-IF(H17,K17,0)-IF(H19,K19,0))/(I12+J12)),舍入((E12-IF(H17,K17,0)-IF(H19,K19,0))/(I12+J12))

正如您所注意到的,我正在检查较高的值是否具有并发性,因此我可以从原始数字中减去金额,然后再次计算减法结果中较低的数字可以拟合多少次。您还可以看到,我在公式中包含了一些复选框,以便在主数字中添加一个固定数字

这实际上是可行的,正如您在示例中看到的,结果是:

|1070 |->适合0次

|535 |->适合1次

|107 |->适合2次

|64.20 |->适合0次

本例中806.45的剩余量为:57.45


但是,每个需要与主数字匹配的数字都需要考虑其他数字;如果你手工解决这个问题,你会得到更好的结果。。像这样:

|1070 |->适合0次

| 535 |->适合一次

|107 |->适合0次

| 64.20 |->适合4次

本例中806.45的剩余值为:14.65

当我谈论剩余时,我指的是减法时的结果,如果这不清楚,我很抱歉,我很难用英语解释数学,因为这不是我的母语,请查看电子表格并制作一份副本,以便更好地理解我试图做的事,或者建议我如何更好地解释它(如果可能)

那么,在计算后,你会如何使它更高效、更“智能”地工作,并尽可能减少可能多的残留量呢

这是谷歌的电子表格供参考和练习,请复制一份,以便其他人可以尝试自己的解决方案:


提前感谢您的帮助或提示。

删除H12:H15中的所有当前公式

然后将此巨型公式放入H12:


=ArrayFormula(查询(拆分)(拆分)(拆分)(拆分)(VLOOKUP(E12,查询)(拆分)(拆分)(拆分)(拆分)(序列(ROUNDUP(E12/I12),1,0)和“&I12&“/”)和转置(序列(ROUNDUP(E12/I13),1,0)和“&I13)和“|”和(序列(ROUNDUP(E12/I12),1,0)*I12)+(转置)(序列(ROUNDUP(E12/I13),1,0)*“/”),”和“,”选择“,”转置(顺序(取整(E12/I14)、1,0)和“&I14”和“&I14”)以及查询(拆分(展平(顺序(取整(E12/I12)、1,0)和“&I12&“/”)和转置(顺序(取整(E12/I13)、1,0)和“&I13”)和“&124;”((顺序(取整(E12/I12)、1,0)*I12)+(转置(顺序(取整(E12/I13)、1,0)*I13)))),“,”选择“/”,选择“Col2“+”,”和“/I14“,”选择“转置(取整(E12/I14”),”和“,”&转置(SEQUENCE)(ROUNDUP(E12/I15)、1,0)和“&I15”以及查询(SPLIT)(plant)(查询(SPLIT)(FLATTEN)(SEQUENCE)(ROUNDUP(E12/I12)、1,0)和“&I12&”&I12&“/”)以及转置(SEQUENCE)(ROUNDUP(E12/I13)、1,0)&I13)和“&I13)以及查询(SEQUENCE(ROUNDUP(E12/I12)、1,0)*-I12)+转置(SEQUENCE)(SEQUENCE)(ROUNDUP(E12/I13)、1,0)/I13)),“选择转置(SEQUENCE)(ROUNDUP)(e11,0)&I14)&I14)&“;”和查询(拆分(展平(序列(舍入(E12/I12)、1,0)&“&I12&“/”)和转置(序列(舍入(E12/I13)、1,0)&“&I13)&((序列(舍入(E12/I12)、1,0)*I12)+(转置(序列(舍入(E12/I13)、1,0)*I13)),“;”,“选择Col2+转置(序列(舍入(舍入(E12/I14)、1,0)*+I15”),“选择Col2,“|”),“选择Col2,Col1,其中Col2开始,1000-(1*535)-(2*107)=251,而不是57.45。类似地,我不确定你是如何得出(1*535)+(4*64.20)=1000-14.65的计算结果的。事实上,我用给定的四个数字计算得出与1000最接近的数字有五种方法,例如,(1*535)+(7*64.20)或-(1*535)+(3*107)+(2*64.20)-或-(2*107)+(12*64.2)还有另外两种可能性——你所建议的两种选择都不是这五种可行组合中的一种。请检查你的数学,然后阐明预期的目标。我不确定我是否完全理解,但它看起来像一个整数规划问题——最小化给定数字的1000个负线性组合(具有非负整数系数),受制于线性组合必须小于或等于1000的约束。有几个包可以解决此类问题;我与GLPK合作过,它看起来不错。也许可以在电子表格中解决此类问题,但使用合适的包似乎可以加快进度。考虑到我正在尝试找到一种方法来自动计算一个数字与另一个数字的“时间”,但要考虑所有其他数字(我前面提到的四个数字)如果你看到我使用的公式,我会将每个结果四舍五入到最低的数字,因为我不想在次数的结果中使用小数。再次分析这一切,当你的帖子使用1000美元作为“最接近”金额时,它似乎是y