在下表中,我不断重新评估 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()
。