在该列还包含文本的列中每隔 50 行求和 - Excel
Sum every 50th row in a column where the column also contains text - Excel
我有一个装满发票的工作簿,经过格式化以供打印,我需要对所有 295 张发票的应付总额求和。第一个 Total Due 在 H22 中,下一个金额在 H71 下方的 50 个单元格中(不包括 H22)。H 列的其余部分包含构成 Total Due 和各种文本的各个金额。像这样:
Charges
10
20
30
Amount Due:
.00
如果将构成总数的范围相加会更容易,那也行。
每个范围为 10 行,H11:H20。然后在 H60:69.
处低于 50
编辑:单元格 H22,而不是 H32
使用这个数组公式:
=SUM(IF(MOD(ROW($H:INDEX($H:$H,MATCH(1E+99,$H:$H)))-1,50)=21,$H:INDEX($H:$H,MATCH(1E+99,$H:$H))))
作为数组公式,退出编辑模式时必须使用 Ctrl-Shift-Enter 而非 Enter 进行确认。如果操作正确,那么 Excel 将在公式周围放置 {}
。
您可以使用 VBA。创建一个新模块,并粘贴:
Option Explicit
Public Function sum_with_gaps(r As Range, gapSize As Integer, dataSize As Integer) As Double
Dim ret As Double, i%
ret = 0
i = 1
Do While i + dataSize - 1 <= r.Count
ret = ret + WorksheetFunction.Sum(r.Range(r.Cells(i - 1, 1), r.Cells(i + dataSize - 1, 1)))
i = i + dataSize + gapSize
Loop
sum_with_gaps = ret
End Function
测试数据:
a
5.1
5.2
5.3
5.4
b
b
6.1
6.2
6.3
6.4
c
c
7.1
7.2
7.3
7.4
d
=sum_with_gaps(A2:A17,2,4)
我有一个装满发票的工作簿,经过格式化以供打印,我需要对所有 295 张发票的应付总额求和。第一个 Total Due 在 H22 中,下一个金额在 H71 下方的 50 个单元格中(不包括 H22)。H 列的其余部分包含构成 Total Due 和各种文本的各个金额。像这样:
Charges
10
20
30
Amount Due:
.00
如果将构成总数的范围相加会更容易,那也行。
每个范围为 10 行,H11:H20。然后在 H60:69.
处低于 50编辑:单元格 H22,而不是 H32
使用这个数组公式:
=SUM(IF(MOD(ROW($H:INDEX($H:$H,MATCH(1E+99,$H:$H)))-1,50)=21,$H:INDEX($H:$H,MATCH(1E+99,$H:$H))))
作为数组公式,退出编辑模式时必须使用 Ctrl-Shift-Enter 而非 Enter 进行确认。如果操作正确,那么 Excel 将在公式周围放置 {}
。
您可以使用 VBA。创建一个新模块,并粘贴:
Option Explicit
Public Function sum_with_gaps(r As Range, gapSize As Integer, dataSize As Integer) As Double
Dim ret As Double, i%
ret = 0
i = 1
Do While i + dataSize - 1 <= r.Count
ret = ret + WorksheetFunction.Sum(r.Range(r.Cells(i - 1, 1), r.Cells(i + dataSize - 1, 1)))
i = i + dataSize + gapSize
Loop
sum_with_gaps = ret
End Function
测试数据:
a
5.1
5.2
5.3
5.4
b
b
6.1
6.2
6.3
6.4
c
c
7.1
7.2
7.3
7.4
d
=sum_with_gaps(A2:A17,2,4)