通过间接列引用

时间:2015-12-11 00:07:30

标签: excel excel-2010 sumifs

Sample Scorecard

我正在建立年度记分卡(上面显示的样本)。记分卡的要求如下所列。

  • 年初日期值必须累计添加以前的每个期间值(以橙色圈出)。
    • P1 = P1
    • P2 = P1 + P2
    • P3 = P1 + P2 + P3(等)
  • 年初至今的公式必须完全相同,动态引用所需的列和所需的行,以便可以轻松地从一个周期到另一个周期(正在进行)复制。

使用这个公式我正在尝试查看第2行中的每个列指示符,并尝试测试ISTEXT()以将值添加到ROW() - 1中。使用concatenate构建引用行范围的字符串可能不是最好的方法。

示例:如果我在第55行有值 = SUM(间接(CONCATENATE(行() - 1,“:”,行() - 1)))

= SUM(INDEX(INDIRECT(CONCATENATE(ROW() - 1,“:”,ROW() - 1)),MATCH(ISTEXT(2:2),2:2,0)))

我尝试使用水平sumifs()公式,运气不佳,尝试使用column()函数的模数值作为逻辑测试。

公式不起作用 = SUMIFS(INDIRECT(ROW() - 1&“:”& ROW() - 1),MOD(COLUMN() - 2,6),0)

或者使用其他一些方法来测试要添加的列。 = SUMIFS(间接(CONCATENATE(ROW() - 1,“:”,ROW() - 1)),IF(ISTEXT(2:2),1,0),TRUE)

如果我将第2行(N,H,T)中的字母更改为“X”,则测试可行的X,但此公式不考虑仅添加当前和之前期间的值的要求。 = SUMIFS(间接(CONCATENATE(行() - 1,“:”,行() - 1)),2:2,“X”)

我不知道如何根据您所在的列添加动态数量的间接单元格引用。所以让我们说它在第3期的第55行,我需要一个看起来在行中的公式2,看到每个列值(H,N,T)并加起来H55,N55,T55)。同样的公式需要根据它是否在第2期(H,N),(H55,N55)中构建一个不同的列表。

也许我需要完全重新考虑我的方法?写VBA而不是?

编辑 为了更好地扩展数据模型的内容,为了解决一些注释,我抛出了一些虚拟值和脏公式。

enter image description here

了解服务水平与年初至今的服务水平(YTD)。服务级别只是每周性能的平坦数据条目,然后“摘要”列是每周性能的简单平均值,以报告期间性能。年初至今的数字是期间数的平均值,因此这些值会逐渐累积。

我想写的公式是汇总列,包括期间值和YTD值。

2 个答案:

答案 0 :(得分:0)

对于T栏使用:

=SUM(IF(MOD(COLUMN($H:T),6)=2,$H$1:T$1,0))
  

这是一个数组公式,必须使用 Ctrl + Shift + Enter 确认。

$H$1:T$1更改为您需要求和的rownumber(它将仅以H开头的每第六列加总)

第9行有UPEH,第10行有此代码,然后=SUM(IF(MOD(COLUMN($H:T),6)=2,$H$9:T$9,0))

如果设置正确一次,您可以根据需要复制粘贴(只要它从H开始每隔第6列保留一次)

为了让它更动态,你可以更好地使用:

=SUM(IF($A$4:T$4="Summary",$A$9:T$9,0))
  

这是一个数组公式,必须使用 Ctrl + Shift + Enter 确认。

它检查第4行是否包含"摘要"得到值的总和:)

修改
但是,如果你想在每个部分中使用完全相同的公式,你需要使用类似的东西:

=SUM(IF(AND($4:$4="Summary",COLUMN($4:$4)<=COLUMN(),OFFSET($1:$1,ROW()-2,),0))
  

这是一个数组公式,必须使用 Ctrl + Shift + Enter 确认。

它将所有单元格中的所有单元格从开头直到(包括)所有列包含&#34;摘要&#34;在第4行中 然而,这可能会非常快(估计很多)^^

BIG HINT :只看你的需要

让asume要添加的单元格在第1行,输出在第2行...... 我们也跳过不计算的列(为了方便)......

A2 would be just A1
B2 would be A1 + B1
C2 would be A1 + B1 + C1... but wait!

A1 + B1 = B2 so better -> C2 = B2 + C1
leads to:  
R2Cx = R2C(x-1) + R1Cx

如果您只是在N列中使用该行为(它是它的值和左侧的计算值(H列))并且也是这样写的,您可以复制它并将其粘贴到T列中你会得到=T(above) + N(calculated)。检查一下:)

答案 1 :(得分:0)

您的数据布局并不完全清楚。

所以,假设:

  1. 标识要汇总的列的标签位于第2行
  2. 总和的值在第55行
  3. 公式是对第55行中的值求和,第2行中包含非空白条目,以及列中的总和值(包括公式所在的列)
  4. 公式

    {{1}}