平均行总数而不在Excel中创建新列

时间:2018-07-24 09:29:11

标签: excel if-statement sum average

这是我的矩阵的一个示例:

A   B   C   D   E
1   0   0   1   1
0   0   0   0   0

0   0   1   1   0
0   2           1

您可以将每一行都视为受访者,将每一列都视为问卷中的一项。

我的目标是取每行总和的平均值(即每个受访者的总分),而不创建新列,并考虑到给定行中某些或全部条目为空的事实(例如,一些受访者
错过了一些项目[请参阅第5行]或没有完全填写调查表[请参阅第3行]。

此矩阵所需的解决方案= 1.67,因此

[1 + 0 + 0 + 1 + 1 = 3] + [0 + 0 + 0 + 0 + 0 = 0] + [0 + 0 + 1 + 1 + 0 = 2] / 3 == 5 / 3 = 1.67

如您所见,尽管有五行,但由于其中一个缺少数据,我们仍对三个值进行了平均。

我已经能够取平均仅对非缺失项求和的行总和,例如:

=AVERAGE(IF(AND(A1<>"",B1<>"",C1<>"",D1<>"",E1<>""),SUM(A1:E1)),IF(AND(A2<>"",B2<>"",C2<>"",D2<>"",E2<>""),SUM(A2:E2)),IF(AND(A3<>"",B3<>"",C3<>"",D3<>"",E3<>""),SUM(A3:E3)),IF(AND(A4<>"",B4<>"",C4<>"",D4<>"",E4<>""),SUM(A4:E4)),IF(AND(A5<>"",B5<>"",C5<>"",D5<>"",E5<>""),SUM(A5:E5)))

但是,由于它会将具有部分或全部值的任何行都视为= 0的值,因此得出的值为1。

它执行以下操作:

[1 + 0 + 0 + 1 + 1 = 3] + [0 + 0 + 0 + 0 + 0 = 0] + [0 + 0 + 0 + 0 + 0 = 0] + [0 + 0 + 1 + 1 + 0 = 2] + [0 + 0 + 0 + 0 + 0 = 0] / 4 == 5/5 = 1

有人对如何使当前代码适应非缺失值的平均值或获得期望结果的另一种方法有任何想法吗?

2 个答案:

答案 0 :(得分:2)

您可以使用数组公式更简洁地完成此操作,但是解决现有公式的简短答案是,如果您的工作表中某处有空白单元格(例如F1),AVERAGE将忽略空白单元格,因此请更改公式

=AVERAGE(IF(AND(A1<>"",B1<>"",C1<>"",D1<>"",E1<>""),SUM(A1:E1),F1),IF(AND(A2<>"",B2<>"",C2<>"",D2<>"",E2<>""),SUM(A2:E2),F1),IF(AND(A3<>"",B3<>"",C3<>"",D3<>"",E3<>""),SUM(A3:E3),F1),IF(AND(A4<>"",B4<>"",C4<>"",D4<>"",E4<>""),SUM(A4:E4),F1),IF(AND(A5<>"",B5<>"",C5<>"",D5<>"",E5<>""),SUM(A5:E5),F1))

这将是公式的一个数组公式版本-它使用OFFSET提取矩阵的每一行,然后使用SUBTOTAL来查看该行中的每个单元格中是否都有数字。然后再次使用SUBTOTAL求出每行的总和,并使用AVERAGE求出行的平均值。

=AVERAGE(IF(SUBTOTAL(2,OFFSET(A1,ROW(A1:A5)-ROW(A1),0,1,COLUMNS(A1:E1)))=COLUMNS(A1:E1),SUBTOTAL(9,OFFSET(A1,ROW(A1:A5)-ROW(A1),0,1,COLUMNS(A1:E1))),""))

必须使用 Ctrl Shift Enter

作为数组公式输入

注1-有些人不喜欢使用OFFSET,因为它易变-您可以改用矩阵乘法,但是说起来不那么容易理解。

注2-我使用“”代替了一个空单元格。有趣的是,非数组公式需要一个实际的空白单元格,但数组公式需要一个空字符串。

您可以省略空字符串

=AVERAGE(IF(SUBTOTAL(2,OFFSET(A1,ROW(A1:A5)-ROW(A1),0,1,COLUMNS(A1:E1)))=COLUMNS(A1:E1),SUBTOTAL(9,OFFSET(A1,ROW(A1:A5)-ROW(A1),0,1,COLUMNS(A1:E1)))))

答案 1 :(得分:1)

基本上,您在这里为获得所需结果所描述的是=AVERAGEA()函数

  

Microsoft Excel AVERAGEA函数返回平均值(算术   均值)。 AVERAGEA功能不同于   AVERAGE函数,因为它将TRUE视为1且值为FALSE   值为0。

请记住,公式应如下所示。

=SUM(AVERAGEA(A1:A4),AVERAGEA(B1:B4),AVERAGE(C1:C4),AVERAGEA(D1:D4),AVERAGEA(E1:E4))

产生预期的结果:

enter image description here


请注意,如果您想将结果ROUND()转换为两位数,请向其添加以下公式:

=ROUND(SUM(AVERAGEA(A1:A4),AVERAGEA(B1:B4),AVERAGE(C1:C4),AVERAGEA(D1:D4),AVERAGEA(E1:E4)), 2)