2016-08-26 11 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.68パーセント、0.35%、1.18%の平均が0.55%0.34%および1.18パーセント

  • FY16Q3の平均を望んたい

  • 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つ(あなたの例のように)であるかどうか、または任意の数のcompainesのために働くために拡張可能なソリューションが必要かどうかということです。 –

+0

@ジープ - 本当に空白です。はい、あなたは正しい - 私のタイプミス。 – Jesse

答えて

0

ヘルパーセルを使用する方法が1つあります。私は同じ列/行ヘッダーを持つ別のテーブルを設定します。

は、その後最初のセルに私が入れ:

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) 

ドラッグしたときに無視される空の細胞を捨てる。

enter image description here

@Jeepedと@XOR LXで出していくつかの注意事項。

  1. 「ブランクが」ませ0何か他のものとしてフォーマットされている場合のみ機能。
  2. 企業と四半期が追加されると、参照テーブルには同じ列と行が追加される必要があります。
+0

提案に感謝します。これは私がこれをしなければならない方法かもしれません。しかし確かに、私は、維持する必要のある細胞や処方を追加することなくこれを行うことができることを本当に望んでいました。 – Jesse

+0

@Jesseこれを1つの式で得るには、UDFでvbaが必要です。ありがとう。 –

+0

少なくとも私は自分自身を理解できないほど悪くはないと感じています。 – Jesse

関連する問題