如何对某一行求和直到满足某个条件

如何对某一行求和直到满足某个条件

我有一个数据集,其中行代表学生的测试成绩,列代表各个测试问题。我想创建一个公式,将学生的各列(测试成绩;0 = 不正确,1 = 正确)相加,直到一行中有四个 0。例如,如果学生得分:

Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20
1  1  1  1  1  1  0  1  1  0   0   0   1   0   0   0   0   1   1   0

该公式应该返回 9,因为它一直求和直到 Q17 满足条件(连续四次错误回答)。

假设第一个学生的第一个问题的表现是单元格B2(第一行是标题,第一列是学生姓名)。

任何帮助都将非常感激,因为这超出了我的 Excel 知识范围。

答案1

使用此公式查找第一个 4 的字符串0并将其设置为范围的结束:

=SUM(B2:INDEX(B2:U2,MATCH(1,INDEX((B2:R2=0)*(C2:S2=0)*(D2:T2=0)*(E2:U2=0),),0)))

在此处输入图片描述

答案2

考虑以下用户定义函数:

Public Function SpecialSum(rng As Range) As Long
    Dim r As Range, crit As Long, v As Long
    SpecialSum = 0
    crit = 0
    For Each r In rng
        v = r.Value
        SpecialSum = SpecialSum + v
        If v = 0 Then
            crit = crit + 1
        Else
            crit = 0
        End If
        If crit = 4 Then Exit Function
    Next r
End Function

它将范围内的值相加,直到遇到四个连续的零:

在此处输入图片描述

用户定义函数 (UDF) 非常容易安装和使用:

  1. ALT-F11 打开 VBE 窗口
  2. ALT-I ALT-M 打开新模块
  3. 粘贴内容并关闭 VBE 窗口

如果您保存工作簿,UDF 将随之保存。如果您使用的是 2003 之后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx

要删除 UDF:

  1. 调出如上所示的 VBE 窗口
  2. 清除代码
  3. 关闭 VBE 窗口

要从 Excel 使用 UDF:

=SpecialSum(B2:Z2)

要了解有关宏的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

有关 UDF 的详细信息,请参阅:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

必须启用宏才能使其工作!

相关内容