在另一个工作表中从一行开始按顺序排列12个单元格的组

我有两个excel表:每月费用1,另一个是费用types的年度费用夏季。

对于每年的费用表,我想每12个月总计一个单元格,然后旁边的单元格是未来12个月,依此类推。

因此,要了解我的工作表是如何设置的:

标题为“运营费用”的表单中有单元格B4:M4,即每年的1月至12月的月度费用。

在题为“资金的来源和用途”的表中,我想要叫D28是B4:M4的总和,然后单元格D29是N4:Y4的总和等等,直到我停止拖动公式为止。

我尝试了Sum(offset())函数,但似乎无法弄清楚。

抛弃SUM(OFFSET(...))方法,坚持在第4行上加上一对INDEX函数来定义一个范围。 如果会更快,并且是一个非易失性函数。

 =SUM(INDEX('Operating Expense'!$4:$4,1,2+(ROW(1:1)-1)*12):INDEX('Operating Expense'!$4:$4,1,13+(ROW(1:1)-1)*12)) 

在D28中,可以填入B4:M4,N4:Y4等。

怎么运行的:

与其他查找函数(例如VLOOKUP函数 , HLOOKUP函数等)不同, INDEX函数可以返回一个单元地址引用,可以直接使用而不需要像INDIRECT函数那样的额外开销。 如果事实如此,你可以将它们中的两个连在一起,只用一个冒号来创build一个可用的单元格区域。

句法:

INDEX(<array>,<row_num>,<column_num>)

例子:(这些都是相同的东西)

 =SUM(INDEX(A:A, 1, 1):INDEX(B:B, 5, 1)) =SUM(A1:INDEX(B:B, 5, 1)) =SUM(INDEX(A:A, 1, 1):B5) =SUM(A1:B5) 

一旦我们控制了一个单元格区域(又名数组 )的行和列,我们就可以用一点math来操作它们。

如果在任何单元格中放入=ROW(1:1)并填充,则会得到1,2,3等 。 这就是我们如何sorting错误,因为我们填写。

你想要第一个12个月的总和B4:M4,所以第一部分使用4:4作为<数组>。 这代表了第4行的全部。<row_num>是1,因为只有一行要考虑。

你想开始在B列的总和范围,所以在数值上是第2列。我们不想在第一次添加任何东西,但是我们想要在填充时添加12 ,所以匹配是2 + (ROW(1:1)-1) × 122+(ROW(1:1)-1)*12用于开始<column_num> 2,14,26等

同样的,你想结束M列的总和范围,这样在数值上就是第13列。我们不想在第一次添加任何东西,但是我们想要添加12 ,所以匹配是13 + (ROW(1:1)-1) × 1213+(ROW(1:1)-1)*12用于结束13,25,37等的<column_num>

填写的结果单元格范围将为B4:M4,N4:Y4,Z4:AK4等。将这些填入SUM函数将给出相应的总计。

如前所述,这是INDEX的一个特点。 VLOOKUP,HLOOKUP等仅返回值,而不是可用的单元格引用。