具有缺失值的Excel平均值

时间:2016-08-26 17:06:46

标签: excel average missing-data

我在单元格A1:F4中有如下数据。

Quarter   | FY15Q4 |    FY16Q1 |    FY16Q2 |    FY16Q3 |    FY16Q4

Company A | 0.34%  |    0.48%  |    0.55%  |    0.68%  | ------

Company B   0.32%       0.36%       0.34%       0.35%     0.35%

Company C | 1.18%   |------     |-----      |-----     |    

我正在尝试查找每行最后4列中最近的非缺失值的平均值。所以:

  • FY15Q4,我希望平均值为0.34%,0.32%和1.18%

  • 2016财年第一季度,我希望平均值分别为0.48%,0.36%和1.18%

  • 2016财年第二季度,我希望平均值分别为0.55%,0.34%和1.18%

  • 2016财年第三季度,我希望平均值分别为0.68%,0.35%和1.18%

  • 2016财年第四季度,我希望平均值分别为0.68%和0.33%(C公司没有最近4Q的数据,因此从平均值的计算中可以忽略不计)

以下数组公式适用于FY16Q3 ......

{=AVERAGE(IF(COUNT(B2:E2)=0,"",INDIRECT(ADDRESS(ROW(B2:E2),MAX((B2:E2<>"")*COLUMN(B2:E2))))),IF(COUNT(B3:E3)=0,"",INDIRECT(ADDRESS(ROW(B3:E3),MAX((B3:E3<>"")*COLUMN(B3:E3))))),IF(COUNT(B4:E4)=0,"",INDIRECT(ADDRESS(ROW(B4:E4),MAX((B4:E4<>"")*COLUMN(B4:E4))))))}

但对于2016财年第四季度,相同的公式结构......

=AVERAGE(IF(COUNT(C2:F2)=0,"",INDIRECT(ADDRESS(ROW(C2:F2),MAX((C2:F2<>"")*COLUMN(C2:F2))))),IF(COUNT(C3:F3)=0,"",INDIRECT(ADDRESS(ROW(C3:F3),MAX((C3:F3<>"")*COLUMN(C3:F3))))),IF(COUNT(C4:F4)=0,"",INDIRECT(ADDRESS(ROW(C4:F4),MAX((C4:F4<>"")*COLUMN(C4:F4)))))) 

返回#VALUE错误值。

似乎AVERAGE函数通常很好地处理空白单元格(“”)值,因为阵列公式的复杂性增加了。

关于如何在没有(i)使用find-and-replace来替换“”并使用真正空白的单元格的情况下如何使其工作的任何建议;或(ii)使用VBA?
当然必须有一种方法只使用公式来完成这项工作......

1 个答案:

答案 0 :(得分:0)

没有数组公式的一种方法是使用辅助单元格。我设置了另一个具有相同列/行标题的表。

然后在我放的第一个单元格中:

=IFERROR(INDEX($A:$F,MATCH($A12,$A:$A,0),IF(MATCH(1E+99,INDEX($A:$F,MATCH($A12,$A:$A,0),1):INDEX($A:$F,MATCH($A12,$A:$A,0),MATCH(B$11,$1:$1,0)))<=MATCH(B$11,$1:$1,0)-4,NA(),MIN(MATCH(1E+99,INDEX($A:$F,MATCH($A12,$A:$A,0),1):INDEX($A:$F,MATCH($A12,$A:$A,0),MATCH(B$11,$1:$1,0))),MATCH(B$11,$1:$1,0)))),"")

然后向上和向下拖动以使用正确的数字填充表格:

enter image description here

然后它只是一个简单的AVERAGE()公式:

=AVERAGE(B12:B14)

拖动时会忽略空白单元格。

enter image description here

@Jeeped和@XOR LX提出了一些警告。

  1. 仅当“空白” 0格式化为其他内容时才有效。
  2. 随着公司和季度的增加,参考表将需要添加相同的列和行。