是否可以重复使用相同的 sumif 范围?

是否可以重复使用相同的 sumif 范围?

在下表中,我不断重新评估 a2:a4 以对其运行不同的计算。在实际的表中,它可能有数千行这样的数据。

有没有办法将 a2:a4 存储在单个单元格中,然后对其运行 sumif?

数字1 数字 2 Sumif1 和If2
2 3 =sumif(a2:a6,a2) =sumif(a2:a6, b2)
4 5 =sumif(a2:a6, a3) =sumif(a2:a6, b3)
6 7 =sumif(a2:a6, a4) =sumif(a2:a6, b4)
2 4 =sumif(a2:a6,a5) =sumif(a2:a6, b5)
4 2 =sumif(a2:a6,a6) =sumif(a2:a6, b6)

如果这是索引/匹配,我会为每一行仅存储一次匹配,然后对其运行多个索引,从而在涉及大量数据时大大加快该过程:

数字1 数字 2 匹配 索引1 索引2
2 3 =匹配(a2,a2:a6) =索引(b2:b6,c2) =索引(a2:a6,c2)
4 5 =匹配(a3,a2:a6) =索引(b2:b6,c3) =索引(a2:a6,c3)
6 7 =匹配(a4,a2:a6) =索引(b2:b6,c4) =索引(a2:a6,c4)
2 4 =匹配(a5,a2:a6) =索引(b2:b6,c5) =索引(a2:a6,c5)
4 2 =匹配(a6,a2:a6) =索引(b2:b6,c6) =索引(a2:a6,c6)

答案1

至少有三种简单的方法可以实现您的愿望。

最简单的方法是将范围引用从相对引用更改为绝对引用:

$a2:$a6

您可以在任意列的第一个单元格中执行此操作,然后根据需要向下复制公式。这些可以是现有列(如您的示例所示),也可以是任何新用途的现有列。

下一个最简单的方法是创建一个命名范围,这也是我希望尽可能广泛使用的首选方法。在其Refers to:字段中,您将输入:

=$A$2:$A$6

鉴于即将推出的LAMBDA()功能及其与命名范围(也不一定只有一个命名范围)结合后的价值,使用命名范围应该很快就会不再受到那么多人的鄙视。我想说,现在是开始习惯它们的好时机!

第三种方法相当简单,但不一定像前两种方法那么简单,因为它需要付出的努力很小,而且可能带来明显的负担。即使用函数INDIRECT()将字符串括起来,a2:a6然后将范围的内容返回给公式。但是,由于地址是字符串,因此在复制到其他单元格时,Excel 引擎不会更改它。我说“努力”是因为在某些情况下,将来更改它可能会造成问题,而且经验不足的用户通常更难理解,因此他们很难接管电子表格的管理工作。如果一个人不能将自己的职责转交给新的职责,他就不会得到晋升,所以……这有点“有问题”。我说“负担”是因为波动性问题,INDIRECT()如果您有一个非常大到巨大的电子表格,尤其是一个复杂的电子表格、一个较旧的 Excel 副本以及一台相当旧的计算机,这个问题可能会很重要。如果您有一台不到 3-5 年的计算机,除非它非常复杂,否则无论如何,这都无关紧要,甚至可能也不是。不是。完全。完全。与你无休止地读到的相反。

如果您的实际使用确实使用了这四个电池范围,那么您根本无需担心INDIRECT()

您可以在单元格中输入范围的字符串来代替命名范围,然后使用 引用该单元格INDIRECT()

答案2

我不断重新评估 a2:a4

实际上 Excel 并没有对该评估进行任何计算,因此这里实际上没有机会提高性能。

如果你想提高可读性,你可以使用命名范围或者将数据转换为表格并使用结构化引用

相关内容