무지개타고

더하기를 하자 - 열일곱번째 본문

Program

더하기를 하자 - 열일곱번째

OnRainbow 2010. 3. 24. 01:04
엑사모에 올라온 질문이다.

질문은 대충 이렇다.
순차적으로 나열된 자료에서 연속적으로 양수가 출현되는 빈도가 임의의 값 이상인 경우,
이에 해당되는 자료의 평균을 구한다는 것.

역시나 뭔 소린지 모르겠다. -_-



엑셀에서 만들어 본 허접한 수식이다.

b25 셀 (연속출현조건을 만족할 때 평균)
=AVERAGE(IF(MMULT(1*(((MMULT(((A2:A21>0)=TRANSPOSE(A2:A21>0))*(A2:A21>0)*(ROW(A2:A21)<=TRANSPOSE(ROW(A2:A21))),1*(ROW(A2:A21)<=TRANSPOSE(ROW(A2:A21))))=(TRANSPOSE(ROW(A2:A21))-ROW(A2:A21)+1))*((TRANSPOSE(ROW(A2:A21))-ROW(A2:A21)+1)>0)+TRANSPOSE((MMULT(((A2:A21>0)=TRANSPOSE(A2:A21>0))*(A2:A21>0)*(ROW(A2:A21)<=TRANSPOSE(ROW(A2:A21))),1*(ROW(A2:A21)<=TRANSPOSE(ROW(A2:A21))))=(TRANSPOSE(ROW(A2:A21))-ROW(A2:A21)+1))*((TRANSPOSE(ROW(A2:A21))-ROW(A2:A21)+1)>0)))>0),ROW(A2:A21)^0)>=B24,A2:A21))

물론 배열수식이다.
그리고 파이어폭스에서는 수식에 제대로 보여지지 않는다. -_-;;

이를 오픈오피스 캘크에서 Current 함수를 활용하면,
Current 함수에 반하지 않을 수 없다는...

=AVERAGE(IF(MMULT(1*(((MMULT(((A2:A21>0)=TRANSPOSE(CURRENT()))*(A2:A21>0)*(ROW(A2:A21)<=TRANSPOSE(CURRENT()));1*(ROW(A2:A21)<=TRANSPOSE(CURRENT())))=(TRANSPOSE(ROW(A2:A21))-ROW(A2:A21)+1))*((TRANSPOSE(ROW(A2:A21))-ROW(A2:A21)+1)>0)+TRANSPOSE(CURRENT()))>0);ROW(A2:A21)^0)>=B24;A2:A21))



Comments