如何在 SUMIF 中使用不连续范围

Lam*_*mbo 4 excel vba

我正在学习在 Excel 中使用 SUMIF。通常在这个公式的第一个参数中是一个连续的范围(类似于 A1:F1)。但现在我真的需要选择这样的东西:A1、C1、E1 由于数据集格式。我可以在 Excel 中做这样的事情吗?甚至 VBA。我也尝试使用 INDIRECT 但它只允许我填写一行。如果我进行自动填充,行号不会改变。这是我使用的公式:

   SUM((SUMIF(INDIRECT({"A1","C1","E1","G1","I1","K1","M1","O1","Q1","S1"}),"<"&V1,INDIRECT({"B1","D1","F1","H1","J1","L1","N1","P1","R1","T1"}))))
Run Code Online (Sandbox Code Playgroud)

任何人都知道如何为整个专栏做到这一点?提前致谢!!!

Ano*_*ker 5

使用不连续范围(也称为多区域范围)的聪明想法。

但它不会工作。

是的,您可以使用范围语法SUMIF((A1,C1,E1,G1),...)命名范围(选择单元格,然后插入->范围->定义)、UNION()函数或 来创建不连续范围INDIRECT(),但它们都不起作用,因为SUMIF()不支持不连续范围。

所以你必须作弊。正如我通过谷歌搜索“sumif不连续”发现的那样,之前已经问过您的问题:

http://www.mrexcel.com/forum/excel-questions/226429-sumif-discontinuous-cells.html

改编橡树的答案,我们得到:

=SUMPRODUCT(--(MOD(COLUMN($A1:$S1),2)=1),--($A1:$S1>V1),$B1:$T1)
Run Code Online (Sandbox Code Playgroud)

它是如何工作的?它创建三个列表,并找到每个列表中每个元素的值,然后将它们相乘。第一个参数对于奇数列是 1,对于偶数列是 0。如果大于 V1,则第二个参数为 1,否则为 0。第三个参数是超过一列的值。

  • @AnotherParker 我同意这是一个更好的方法,但不能说公式中引用的公式不起作用 - 如果“输入数组”,它会起作用 - `INDIRECT` 并没有真正在这里创建一个不连续的范围,它创建一个范围数组 (3认同)
  • `--` 是我使用 `SUMPRODUCT()` 的一个关键创新:它允许你使用布尔值(`TRUE` 或 `FALSE`),分别将它们转换为 `1` 或 `0`,因此它们将当它把所有东西相乘时,按你想要的方式行事。 (2认同)