我在excel中有一列数字,带有正数和负数。这是一本会计账簿。我需要消除总和为零的单元格。这意味着我想要删除子集,因此元素的其余部分不能形成任何子集以求和为零。我认为这个问题是找到最大的子集和。通过删除/消除,我的意思是在excel中标记它们。
例如: 集合{1,-1,2,-2,3,-3,4,-4,5,-5,6,7,8,9},
我需要一个找到子集{1,-1,2,-2,3,-3,4,-4,5,-5}并标记每个元素的函数。
答案 0 :(得分:1)
这个建议可能有点笨拙,但它应该能够解决一大类问题 - 例如当一个信用额可能被一个以上的借方清零时(反之亦然) - 如果这是什么你要。就像你要求的那样,它将逐字地找到总和为零的最大子集:
在A栏输入您的数字,例如在A1:A14范围内。
在B栏中,在您的号码旁边,在每个单元格B1:B14中输入0
。最终,如果选择A列中的相应数字,这些单元格将设置为1,否则将设置为0。
在单元格C1中,输入公式=A1*B1
。将公式复制到单元格C2:C14。
在B列的底部,在单元格B15中,输入公式=SUM(B1:B14)
。此公式计算所选数字的计数。
在C栏的底部,在单元格C15中,输入公式=SUM(C1:C14)
。此公式计算所选数字的总和。
激活解算器加载项并将其用于后续步骤。
设置目标以最大化单元格$ B $ 15的值 - 换句话说,最大化所选数字的数量(即,找到最大的子集)。
< / LI>设置以下三个约束以要求单元格B1:B14中的值(表示您的每个数字是否被选中)为0或1:a)$B$1:$B$14 >= 0
,b){ {1}},和c)$B$1:$B$14 <= 1
。
设置以下约束以要求所选数字加起来为0:$B$1:$B$14 = integer
。
使用解算器加载项解决问题。
希望这有帮助。
答案 1 :(得分:0)
我认为您需要更好地定义您的问题,因为目前已经说过没有明确的答案。
这就是原因。拿这组数字:
{ -9, -5, -1, 6, 7, 10 }
有64个可能的子集 - 包括空集 - 这三个中有零和:
{ -9, -1, 10 }, { -5, -1, 6 } & { }
有两种可能的“最大”零和子集。
如果你删除其中任何一个,你最终得到以下任何一个:
{ -5, 6, 7 } or { -9, 7, 10 }
这些都不是零,但没有规则来确定要选择哪个子集。
您可以决定删除“合并”的零和子集的集合。这会让你:
{ 7 }
但这在会计套餐中是否有意义?
同样,你可以决定只消除一对匹配的正面和正面;负数,但许多交易涉及三元组(即销售=成本+税收)。
除非您更清楚地描述您的要求,否则我不确定您的问题是否可以回答。