对另一个工作表中一行的 12 个单元格的顺序组求和
SUM sequential groups of 12 cells from a row in another worksheet
我有两个 excel sheets:一个是每月的费用,另一个是按费用类型分类的年度夏季费用。
对于每年的费用sheet,我想每12个月总结一次并把它放在一个单元格中,然后它旁边的单元格是接下来的12个月,依此类推。
所以想了解一下我的 sheet 是如何设置的:
Sheet 标题为 'Operating Expense' 的单元格 B4:M4 是当年 Jan-Dec 的月度开支。
在标题为 "sources & uses of funds" 的 sheet 上,我希望调用 D28 是 B4:M4 的总和,然后单元格 D29 是 N4:Y4 的总和等等直到我停止拖动公式。
我尝试了 Sum(offset()) 函数,但似乎无法理解。
放弃 SUM(OFFSET(...))
方法并坚持对一对 INDEX function 求和,在第 4 行定义一个范围。 If 会更快并且是一个非易失性函数。
=SUM(INDEX('Operating Expense'!:,1,2+(ROW(1:1)-1)*12):INDEX('Operating Expense'!:,1,13+(ROW(1:1)-1)*12))
有了D28中的那个,你可以往下填B4:M4、N4:Y4等
工作原理:
与其他查找函数(例如 VLOOKUP 函数、HLOOKUP 函数 等)不同,INDEX function 可以 return 一个可以直接使用的单元格地址引用,而不需要像 INDIRECT 函数 这样的额外开销。事实上,您可以将其中两个拼接在一起,只需一个冒号即可创建一个可用的单元格范围。
语法:
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)
一旦我们控制了单元格范围的行和列(又名 数组),我们就可以用一点数学来操纵它们。
If you put =ROW(1:1)
in any cell and fill down you will get 1, 2, 3, etc. This is how we sequence the stagger as we fill down.
您希望第一组 12 个月的总和为 B4:M4,因此第一部分对 使用 4:4。这表示第 4 行的所有内容。 是 1 因为只有一行要考虑。
您想从 B 列开始求和范围,以便在数字上是第 2 列。我们不想在第一次添加任何内容,但我们想添加 12 作为我们向下填充,所以匹配是 2 + (ROW(1:1)-1) × 12
或 2+(ROW(1:1)-1)*12
开始 of 2, 14, 26, etc.
同样,您希望在第 M 列结束总和范围,因此在数字上是第 13 列。我们不想第一次添加任何内容,但我们想添加 12 当我们向下填充时,匹配项是 13 + (ROW(1:1)-1) × 12
或 13+(ROW(1:1)-1)*12
以结束 of 13, 25, 37, etc.
当您向下填充时,生成的单元格范围将是 B4:M4、N4:Y4、Z4:AK4 等。将这些填充到 SUM function 中会给您各自的总数。
如前所述,这是 INDEX 的一个特点。 VLOOKUP、HLOOKUP 等仅 return 值,而不是可用的单元格引用。
我有两个 excel sheets:一个是每月的费用,另一个是按费用类型分类的年度夏季费用。
对于每年的费用sheet,我想每12个月总结一次并把它放在一个单元格中,然后它旁边的单元格是接下来的12个月,依此类推。
所以想了解一下我的 sheet 是如何设置的:
Sheet 标题为 'Operating Expense' 的单元格 B4:M4 是当年 Jan-Dec 的月度开支。
在标题为 "sources & uses of funds" 的 sheet 上,我希望调用 D28 是 B4:M4 的总和,然后单元格 D29 是 N4:Y4 的总和等等直到我停止拖动公式。
我尝试了 Sum(offset()) 函数,但似乎无法理解。
放弃 SUM(OFFSET(...))
方法并坚持对一对 INDEX function 求和,在第 4 行定义一个范围。 If 会更快并且是一个非易失性函数。
=SUM(INDEX('Operating Expense'!:,1,2+(ROW(1:1)-1)*12):INDEX('Operating Expense'!:,1,13+(ROW(1:1)-1)*12))
有了D28中的那个,你可以往下填B4:M4、N4:Y4等
工作原理:
与其他查找函数(例如 VLOOKUP 函数、HLOOKUP 函数 等)不同,INDEX function 可以 return 一个可以直接使用的单元格地址引用,而不需要像 INDIRECT 函数 这样的额外开销。事实上,您可以将其中两个拼接在一起,只需一个冒号即可创建一个可用的单元格范围。
语法:
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)
一旦我们控制了单元格范围的行和列(又名 数组),我们就可以用一点数学来操纵它们。
If you put
=ROW(1:1)
in any cell and fill down you will get 1, 2, 3, etc. This is how we sequence the stagger as we fill down.
您希望第一组 12 个月的总和为 B4:M4,因此第一部分对
您想从 B 列开始求和范围,以便在数字上是第 2 列。我们不想在第一次添加任何内容,但我们想添加 12 作为我们向下填充,所以匹配是 2 + (ROW(1:1)-1) × 12
或 2+(ROW(1:1)-1)*12
开始
同样,您希望在第 M 列结束总和范围,因此在数字上是第 13 列。我们不想第一次添加任何内容,但我们想添加 12 当我们向下填充时,匹配项是 13 + (ROW(1:1)-1) × 12
或 13+(ROW(1:1)-1)*12
以结束
当您向下填充时,生成的单元格范围将是 B4:M4、N4:Y4、Z4:AK4 等。将这些填充到 SUM function 中会给您各自的总数。
如前所述,这是 INDEX 的一个特点。 VLOOKUP、HLOOKUP 等仅 return 值,而不是可用的单元格引用。