2016-08-26 80 views
0

我在单元格A1:F4中具有以下数据。带有缺失值的Excel平均值

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%

  • FY16Q1平均,我要的0.48%,0.36%和1.18%的平均

  • FY16Q2,我想为0.55%,0.34%和1.18%

  • FY16Q3平均,我要的0.68%,0.35%,和1.18%的平均

  • FY16Q4,我想的0.68%和0.33%的平均(C公司具有用于最近4QS没有数据,所以它是为从平均值的计算忽略)

以下阵列式作品因为我想为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))))))} 

但FY16Q4,同样的公式结构...

=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

您能更正FY16Q4的样本数据吗?从你的描述看,它应该是0.33%,而不是0.35%。另外,这些“-------”单元是否真的是空白的,还是它们实际上有“-----”? – Jeeped

+1

我的问题是,实际上公司的数量是否只有3个(例如你的例子),或者是否有任何解决方案需要扩展才能适用于任何数量的公司。 –

+0

@Jeeped - 那些确实是空白的;是的,你是正确的 - 我的错字错误。 – Jesse

回答

0

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

然后在第一个单元格,我把:

enter image description here

然后,它仅仅是一个简单的:

=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)))),"") 

然后用正确的号码将它拖到对面,下来,填写表AVERAGE()公式:

=AVERAGE(B12:B14) 

哪些在拖动时会将ign去除空白单元格。

enter image description here

几个警告由@Jeeped和@XOR LX熄灭。

  1. 这只有在“空白” 0格式化为别的工作。
  2. 随着公司和宿舍的添加,参考表格将需要添加相同的列和行。
+0

感谢您的建议;这可能是我必须这样做的方式。但是如实地,我真的希望能够在不添加额外的单元格和需要维护的公式的情况下做到这一点。 – Jesse

+0

@Jesse为了在一个公式中获得它,它需要UDF中的vba。 –

+0

谢谢。至少我不难过,我无法自己弄清楚这一点。 – Jesse