2016-08-26 1 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) 찾기 및 바꾸기를 사용하여 ""을 빈 셀로 교체하지 않고도이 작업을 수행 할 수있는 방법에 대한 제안. 또는 (ii) VBA?
수식만을 사용하여이 작업을 수행하는 방법이 반드시 있어야합니다. ...

+1

FY16Q4의 샘플 데이터를 수정할 수 있습니까? 설명에 따르면 0.35 %가 아니라 0.33 % 인 것으로 보입니다. [편집] 또한, 그'-------'셀은 정말로 비어 있거나 실제로'-----'를 포함하고 있습니까? – Jeeped

+1

제 질문은 실제로 회사의 수가 3 개 (예 : 귀하의 경우)이거나, 원하는 수의 컴필 인을 처리하기 위해 솔루션을 확장해야하는지 여부에 관한 것입니다. –

+0

@ 지프 - 정말 비어 있습니다. 네, 맞습니다 - 오타가 잘못되었습니다. – 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) 

드래그 할 때 무시됩니다. 빈 칸을 채취하십시오. @Jeeped 및 @XOR LX에 의해 넣어

enter image description here

몇 가지주의 사항. 은 "빈은"는 다른 무언가로 포맷하지0 경우

  1. 에만 작동합니다.
  2. 회사 및 분기가 추가되면 참조 테이블에 동일한 열과 행이 추가되어야합니다.
+0

제안에 감사드립니다. 이것이 내가해야 할 일일 수 있습니다. 그러나 진실하게, 나는 유지할 필요가있는 추가 세포와 공식을 추가하지 않고 이것을 할 수 있기를 정말로 바랬다. – Jesse

+0

@Jesse 하나의 수식으로 얻으려면 UDF에서 vba가 필요합니다. –

+0

감사합니다. 적어도 나는 나 자신을 이해할 수 없다고 생각하지 않는다. – Jesse