Google 스프레드 시트에서 비어 있지 않은 마지막 7 개의 빈 셀 평균


답변:


6

한 가지 방법이 있습니다.

=average(indirect("D" & iferror(large(filter(row(D7:D), len(D7:D)), 7), row(D7)) & ":D"))

설명:

  • filter(row(D7:D), len(D7:D)) 주어진 범위에서 비어 있지 않은 항목의 행 번호로 구성된 배열을 반환합니다.
  • large(..., 7) 이 배열에서 7 번째로 큰 숫자를 선택합니다. 이것은 평균화를 시작하려는 행 번호입니다.
  • iferror(..., row(D7))범위에 공백이 아닌 항목이 7 개 미만인 경우를위한 보호 조치입니다.이 경우 평균은 D7로 시작합니다. 대신 "7"을 넣을 수는 row(D7)있지만 row(D7)수식을 다른 곳으로 복사하기로 결정한 경우 수식을 더 이식 가능하게 만듭니다.
  • indirect("D" & ... & ":D")예를 들어, D9:D선행 계산의 출력이 9 인 경우 평균화 범위를 형성합니다 .
  • 마지막으로 average평균을 수행합니다. 다른 집계 함수도 여기에 넣을 수 있습니다.

작동 및 새로운 변경 사항 업데이트!
스폰지 밥 네모 바지

고맙지 만 지금은 JPV의 대답이 받아 들여야한다고 생각합니다. 더 간단하고 의미 론적으로 자연 스럽습니다.

그것은 나를 위해 올바르게 업데이트되지 않았습니다, 나는 그것이 더 쉽다고 생각했지만 더 많은 숫자를 추가하면 작동하지 않습니다.
스폰지 밥 네모 바지

6

TL; DR

=AVERAGE(OFFSET(A:A;COUNT(A:A)-7 + MATCH(TRUE;INDEX(A:A<>0);0)-1;0))

여기에 이미지 설명을 입력하십시오

설명

  • 먼저 A 행에 몇 개의 숫자가 있는지 계산합니다 =COUNT(A:A). 텍스트가 포함 된 셀은 계산되지 않습니다. 우리의 예는 우리에게 줄 것입니다9
  • 마지막 7 개 값의 평균을 원하므로이 숫자에서 7을 뺍니다 =COUNT(A:A)-7. 이것은 우리에게을 줄 것이다 2.
  • 이제 오프셋 함수를 사용하여 전체 열의 범위를 얻지 만 2 셀의 오프셋을 사용하면 정확히 7 개의 값이 남아있는 열의 일부만 남았습니다.

    값이있는 첫 번째 셀 앞에 빈 셀이없는 열을 상상해보십시오. 그러면 간단한 예제는 다음과 같습니다 =OFFSET(A:A; COUNT(A:A)-7 ;0). 그러나 위의 그림과 같이 열이 빈 셀로 시작되는 즉시 작동하지 않습니다.

  • 이제 빈 셀 수만큼 오프셋을 확장해야합니다. 그렇다고해서 모든 빈 값을 한 줄에 세는 것은 아닙니다. 비어 있지 않은 첫 번째 셀 이전의 셀만 있습니다.

    당신은 그들을 계산하고 결과 또는 우리의 예를 =MATCH(TRUE;INDEX(A:A<>0);0)-1얻을 수 있습니다6

    이제 오프셋 함수를 수정하고이 계수를 추가하여 7 개의 값만 포함하는 올바른 범위를 얻습니다.
    OFFSET(A:A; COUNT(A:A)-7 + MATCH(TRUE;INDEX(A:A<>0);0)-1 ;0)

    여기에 이미지 설명을 입력하십시오

  • 마지막 단계로이 범위의 평균을 계산합니다. 이 예에서는 평균 1,2,3,4,5,6,7이 4이므로 결과는 4입니다.
    =AVERAGE(OFFSET(A:A;COUNT(A:A)-7 + MATCH(TRUE;INDEX(A:A<>0);0)-1;0))


탁월한 답변.
ale

제대로 작동했지만 다른 셀을 추가하면 제대로 업데이트되지 않습니까?
스폰지 밥 네모 바지

2

또 다른 방법 :

=AVERAGE(ARRAY_CONSTRAIN(SORT(FILTER(A:A, ISNUMBER(A:A)), 1, 1), 7, 1))

외식 :

  1. 모든 숫자 값을 필터링
  2. sort ()를 사용하여 열을 거꾸로 뒤집습니다 (마지막 값이 위에 있음)
  3. 해당 열의 출력을 7 행으로 제한 (ARRAY_CONSTRAIN 사용)
  4. 평균을 ...

편집 : 오해 죄송합니다. 위의 값은 열의 마지막 7 개 값이 아니라 가장 최근의 7 개 값입니다. 마지막 7 개의 값을 평균화하려면 Normal Human의 솔루션이 좋습니다. 기능이 적은 다른 방법은 QUERY ()를 사용하는 것입니다.

A 열의 숫자 데이터를 가정하면 다음을 시도하십시오.

=AVERAGE(QUERY(ARRAYFORMULA({ROW(A:A),A:A}),"select Col2 where Col2 is not null order by Col1 desc limit 7", 0))

0

=AVERAGE(IFERROR(QUERY(D7:D, 
 "where D is not null 
  offset "&COUNTA(QUERY(D7:D, "where D is not null", 0)) - 7, 0)))

0

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.