将多个不连续的范围组合成一个指定的范围来清理公式

我有一个公式,我使用哪个工作得很好,但我想清理它。

=SUMIF(IB02R, A56, IB02P)+SUMIF(IB03R, A56, IB03P)+SUMIF(IB04R, A56, IB04P) 

IB02RIB03RIB04RIB02PIB03PIB04P是我在名称pipe理器中定义的范围。 他们看整行。

IB02R查看另一张纸的B4-ND4 IB02P查看另一张纸的B5-ND5

等等。

这是原来的公式:

=SUMIF('2014'!$A$4:$ND$4,A75,'2014'!$A$5:$ND$5)+SUMIF('2014'!$A$7:$ND$7,A75,'2014'!$A$8:$ND$8)+SUMIF('2014'!$A$10:$ND$10,A75,'2014'!$A$11:$ND$11)

我想简化这个结合所有的R和P的,而不是有3 sumif陈述我可以有=SUMIF(IB0234R, A56, IB0234P)IB0234RIB0234PIB0234R等内包含的范围。

该公式是查找特定单元格与3个不同行中的每个单元格之间的匹配。 第4,7和10行

如果在这些行的任何地方有一个匹配,那么分别在行5,8和11中总结相应的值。

我的两个公式都适用,但为了可读性和清晰度,我想简化。

这可能吗? 我尝试了几种不同的方法来取得成功。

这是你的公式:

=SUMPRODUCT((CHOOSE({1;2;3},'2014'!$A$4:$ND$4,'2014'!$A$7:$ND$7,'2014'!$A$10:$ND$10)=A56)*CHOOSE({1;2;3},'2014'!$A$5:$ND$5,'2014'!$A$8:$ND$8,'2014'!$A$11:$ND$11))

这将花费一点点的命名范围福,使其可读性,但它绝对是可行的。

首先,将每个部分的“第一行”合并到另一个命名范围中,如下所示:

=CHOOSE({1;2;3},IB02R,IB03R,IB04R) – 我们将称这个IB00R

现在对“第二行”也是这样做的:

=CHOOSE({1;2;3},IB02P,IB03P,IB04P) – 我们将称之为IB00P

现在公式变成:

=SUMPRODUCT((IB00R=A56)*IB00P)

为了准确理解公式是如何工作的,我build议在公式选项卡上单击评估公式,然后逐步完成,并进入和退出命名范围。

编辑: 好的,现在我怀疑自己 – 不知道这是否工作正常。 我知道它会起作用,因为我以前做过,但下面的公式可能不是很正确。 我会弄清楚一点。

编辑2: 正如书面,这是行不通的。 然而,这个问题有一个解决办法,但我不记得它是什么。 仍然摆弄它。 如果我无法弄清楚,我会删除这个答案。

编辑3:现在工作。 我忘了,为了结合非连续的行,你必须使用CHOOSE()而不是INDEX()对不起,错误的开始。

仅供参考,我绝对像Rick的回答更多,但我承认,他所做的对我来说是新的(这就是为什么我喜欢这个网站!!),所以我只知道如何使用VBA做到这一点。

使用VBA,您可以使用的function如下:

 Function Disjoined_SumIf(CriteriaRange As Range, Criteria As Range, SumRange As Range) As Double Dim ar As Integer Dim cl As Integer For ar = 1 To CriteriaRange.Areas.Count For cl = 1 To CriteriaRange.Areas(ar).Cells.Count If CriteriaRange.Areas(ar).Cells(cl).Value = Criteria.Value Then Disjoined_SumIf = Disjoined_SumIf + SumRange.Areas(ar).Cells(cl).Value Next cl Next ar End Function 

您可以在电子表格中使用它=Disjoined_SumIf(IB0234R, A56, IB0234P)

该function将基于以下假设进行工作:

  1. 标准范围被分割成相同的总和范围(你的情况是这样)
  2. 它没有考虑到你的总和范围内的非数字数据,这些数据会炸毁这个function

这是一个快速和肮脏的解决scheme,可以build立在使其更强大,但它会工作!

所以,我一定会select瑞克的解决scheme,但为了完整起见,我还要加上这个。