在该列还包含文本的列中每隔 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)