如何仅用Excel单元格公式求解基于XX、YY、ZZ的动态计算器问题
解决方案
这是一个欠定线性方程组(9个变量,6个约束条件),存在无穷多组解。我们只需构造其中一组满足所有约束的解即可,完全通过普通Excel单元格公式实现,无需规划求解、数组公式或VBA。
前提校验
输入的行总和XX、YY、ZZ必须满足行总和之和等于列总和之和,否则问题无解。添加校验公式:
=IF(D1+D2+D3=E1+E2+E3,"输入合法","输入无效:行总和与列总和的和不相等")
(注:替换D1/D2/D3为存储XX/YY/ZZ的单元格;E1/E2/E3为存储T/U/V列固定总和的单元格)
构造可行解(以固定3个变量为0为例)
假设表格结构如下(括号内为单元格地址):
| T列(总和E1) | U列(总和E2) | V列(总和E3) | 行总和 | |
|---|---|---|---|---|
| 行1 | a1(A1) | b1(B1) | c1(C1) | XX(D1) |
| 行2 | a2(A2) | b2(B2) | c2(C2) | YY(D2) |
| 行3 | a3(A3) | b3(B3) | c3(C3) | ZZ(D3) |
| 列总和 | E1 | E2 | E3 |
按以下步骤设置公式:
- 固定3个变量为0(直接输入数值0):
- A1(a1)= 0
- B1(b1)= 0
- C2(c2)= 0
- 计算行1的V列值:
=D1 - A1 - B1 - 计算行2的U列值:
=D2 - A2 - C2 - 计算行3的T列值:
=E1 - A1 - A2 - 计算行3的U列值:
=E2 - B1 - B2 - 计算行3的V列值:
=E3 - C1 - C2
验证解的正确性
由于校验条件确保XX+YY+ZZ=E1+E2+E3,行3的总和会自动满足:
A3 + B3 + C3 = (E1-A1-A2) + (E2-B1-B2) + (E3-C1-C2) = (E1+E2+E3) - (A1+B1+C1) - (A2+B2+C2) = (XX+YY+ZZ) - XX - YY = ZZ
生成其他可行解
若需要不同的解,只需调整固定的3个变量(例如将A1设为任意值,而非0),同时更新对应依赖的公式即可,所有公式仍保持普通单元格公式的形式。
内容的提问来源于stack exchange,提问作者user12838762
相关产品推荐
相关产品推荐

