所以我有一张电子表格,里面有一堆小图表,如下所示。蓝色数字是用户输入的,它们全部加在一起显示在图表中,左上角是灰色单元格。
现在,我使用一个基本的求和公式来实现这一点。实际的电子表格要大得多,但在示例中,C3 将是 =sum(J3+C13+J13),D3 将是 =sum(K3+D13+K13),依此类推。您可以想象,添加新图表或删除现有图表是一件非常麻烦的事情。
我想要的是一种无需添加单个单元格即可自动实现这一点的方法,这样我就可以根据需要添加或删除任意数量的图表,同时仍将数字加起来。
因此,单元格 E5 将计算工作表中数字位于 III 下方三个单元格和 N/A 右侧三个单元格的所有单元格。或者其他可以完成相同操作的操作。
有没有办法可以在不改变电子表格布局的情况下实现这一点?
答案1
简而言之,如果不修改图表布局,就没有办法做到这一点,这比指定比您将永远使用的更多的单元格更好。在我上面的例子中,我以单元格结束J500003
。假设您的图表在第 470 行结束。这不是问题。空单元格计为 0,不会影响总和。如果您一开始就将公式任意设置为高,则您永远不必再次修改公式。
如果您愿意对图表布局进行少量修改,公式可以更短,但最终仍会指定大量未使用的单元格。如果您在“打开”上方的单元格中添加“标题”(或“状态”或其他内容),那么您可以将这些列视为数据库并使用DSUM
例如,这是新的布局:
ABCDEF 12 标题 I II II 总计 13 公开 1 75 21 97 14 已关闭 21 312 39 372 15 不适用 2 47 7 56 16 未审核 总共 17 个可能 18 总评论数 24 434 67 525 完成 19% 20 21 22 I II II 总计 23 开放 1 75 21 97 24 已关闭 21 312 39 372 25 不适用 2 47 7 56 26 未审核 总共 27 个可能 28 总评论数 24 434 67 525 完成 29%
(您实际上只需要在单元格 A12 和 H2 中添加文本字符串。我在示例布局中使用了“标题”。)
现在在 A1 中指定所需的列,并在 A2 中指定要在该列中匹配的值。例如,我想添加所有“Open”的“I”,因此 A1 为“Header”(因为这是我为标签列指定的名称),A2 为“Open”,然后公式将为=DSUM(A12:F140000,"I",A1:A2)+DSUM(H2:M140000,"I",A1:A2)
它使公式更短,但效率不会更高或更低,并且仍然引用可能未使用的单元格。
如果您想完全避免触碰未使用的单元格并且不想向两个单元格添加文本,那么您将不得不使用 VBA 循环。
答案2
以下公式将起作用,但只有当您更改某些格式时才有效。
需要进行格式更改:
- 求和不能在您要计算的单元格范围内进行。因此,您可以将格式改为类似这样的格式
一旦您在主体之外有了总结,以下公式就可以正常工作。它会进入C4
然后复制粘贴到其他单元格中。(该公式是一个数组公式,应使用 CTRL-SHIFT-ENTER 输入)
{=SUM(IF(COLUMN($A$12:$M$25)=(IF($A$12:$M$12=C$3,COLUMN($A$12:$M$12))),
IF(ROW($A$12:$M$25)=IF($A$12:$A$25=$A4,ROW($A$12:$A$25)),$A$12:$M$25)))}
扩展$A$12:$M$25
到您想要覆盖的更大的数组,并确保$A$12:$M$12
是数组的整个第一行并且$A$12:$A$25
是数组的整个长度。
只要您保持网格模式,此公式才会有效,因为它只查看I, II, III
第一行和"open" "closed" and "N/A"
第一列,然后计算交点。
进一步解释一下这个公式:
嵌入的 if 语句:
IF($A$12:$M$12=C$3
找到适当的列,IF($A$12:$A$25=$A4
语句找到适当的行。外层 if 语句:
IF(COLUMN($A$12:$M$25)
并IF(ROW($A$12:$M$25)
返回同时满足两个条件的单元格