|
本帖最后由 林木水 于 2021-11-8 15:51 编辑
看第三个工作表 sheet3
1.首先把B列数据进行判断
在E列操作:=IFERROR(B3,"A"),往下填充公式
2.在F列进行判断
F2单元格输入0;F3单元格输入:=IF(E5="A",F4,F4+1),往下填充公式
3.在D22单元格输入:
=IF(E22="A",NA(),INDEX(E:E,MATCH(F22,F:F,0))+INDEX(E:E,MATCH(F22-1,F:F,0))+INDEX(E:E,MATCH(F22-2,F:F,0))+INDEX(E:E,MATCH(F22-3,F:F,0))+INDEX(E:E,MATCH(F22-4,F:F,0)))
说明,如果E列值为A说明是B列是错误值,直接输出#N/A
如果不是错误的,分别用match定位是对应F列的数值-0,-1,-2,-3,-4的行数,在结合index得出要的数值求和
如果用VBA也可以,看第二个工作表sheet2
Sub 求和5个数值()
Dim i As Integer, j As Integer, k As Integer
Dim arr(1 To 5) As String
For i = 22 To Sheet2.[d22].End(xlDown).Row
If VBA.IsError(Sheet2.Cells(i, "b")) = True Then
Sheet2.Cells(i, "D").Value = "#N/A"
Else
For j = i To 3 Step -1
'将5个值分别存入arr
If VBA.IsError(Sheet2.Cells(j, "b")) = False Then
k = k + 1
If k <= 5 Then
arr(k) = Sheet2.Cells(j, "b").Value
'超过5就终止当前单元格的求和调到下一个单元格
Else
Sheet2.[g1].Resize(5, 1) = Application.Transpose(arr)
k = 0
Sheet2.Cells(i, "D").Value = Application.WorksheetFunction.Sum(Sheet2.[g1].Resize(5, 1))
Sheet2.[g1].Resize(5, 1) = ""
GoTo 100
End If
End If
Next j
100:
End If
Next i
End Sub
|
评分
-
查看全部评分
|