Google 스프레드 시트에서 비어 있지 않은 마지막 7 개의 빈 셀 평균 셀이 비어있는 경우가 있습니다.

D7 : D 범위의 숫자가 있으며 일부 셀이 비어있는 경우가 있습니다. 마지막 7 숫자의 평균을 원하지만 공백을 건너 뛰십시오. 마지막 7 개에 가득 찬 3 개만 있다면 더 돌아가서 7 개를 찾아 평균을 내고 싶습니다.



답변

한 가지 방법이 있습니다.

=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평균을 수행합니다. 다른 집계 함수도 여기에 넣을 수 있습니다.

답변

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))


답변

또 다른 방법 :

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


답변

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

0


답변