Google E-Tablolar'daki son 7 boş olmayan boş hücrenin ortalaması


Yanıtlar:


6

İşte bir yaklaşım:

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

Açıklama:

  • filter(row(D7:D), len(D7:D)) verilen aralıktaki boş olmayan girişlerin satır numaralarından oluşan bir dizi döndürür.
  • large(..., 7) bu dizideki en büyük 7. sayıyı alır: bu, ortalamayı başlatmak istediğiniz satır numarasıdır.
  • iferror(..., row(D7))aralığınızın boş olmayan 7'den az girişi olması durumunda bir önlemdir: bu durumda ortalama D7 ile başlar. Bunun yerine "7" yazabilirdim row(D7), ancak row(D7)başka bir yere kopyalamaya karar vermeniz durumunda formülü daha taşınabilir hale getirir.
  • indirect("D" & ... & ":D"), örneğin D9:Dönceki hesaplamanın çıktısı 9 ise ortalama alma aralığını oluşturur .
  • Son olarak, averageortalama yapar. Buraya başka toplama işlevleri de ekleyebilirsiniz.

çalışır ve yeni değişiklikler için güncellemeler!
Spongebob Squarepants

Teşekkürler, ama şimdi JPV'nin cevabının kabul edilmiş olması gerektiğini düşünüyorum: daha basit ve daha anlamsal olarak doğal.

benim için düzgün güncellenmedi, ben de daha kolay olduğunu düşündüm ama daha fazla sayı ekledikten sonra işe yaramadı.
Spongebob Squarepants

6

TL; DR

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

Misal

resim açıklamasını buraya girin

açıklama

  • İlk önce A satırında kaç sayı olduğunu sayarız =COUNT(A:A). Metin içeren hücreler sayılmaz. Örneğimiz bize9
  • Eğer son 7 değerlerin ortalamasını istiyorum çünkü bu numaradan itibaren 7 çıkarmak: =COUNT(A:A)-7. Bu bize bir 2.
  • Şimdi, tam bir sütunun bir aralığını elde etmek için ofset işlevini kullanıyoruz, ancak 2 hücreden oluşan bir ofset ile, tam olarak 7 değer kalan bir sütunun yalnızca bir kısmına sahip olduğumuz anlamına gelir

    Değerleri olan ilk hücreden önce boş hücreleri olmayan bir sütun düşünün. Sonra basitleştirilmiş bir örnek gibi görünebilir =OFFSET(A:A; COUNT(A:A)-7 ;0). Ancak, sütun yukarıdaki resimde gösterildiği gibi boş hücrelerle başlar başlamaz işe yaramaz

  • Şimdi ofsetimizi boş hücre sayısı kadar genişletmemiz gerekiyor. Bu, arka arkaya tüm boş değerleri saydığımız anlamına gelmez. İlk boş olmayan hücreden önceki olanlar.

    Bunları sayabilir =MATCH(TRUE;INDEX(A:A<>0);0)-1ve 6sonuç veya örnek olarak alabilirsiniz

    Şimdi ofset fonksiyonumuzu değiştiriyoruz ve sadece 7 değer içeren doğru aralığı elde etmek için bu sayımı ekliyoruz
    OFFSET(A:A; COUNT(A:A)-7 + MATCH(TRUE;INDEX(A:A<>0);0)-1 ;0)

    resim açıklamasını buraya girin

  • Son adım olarak bu aralığın ortalamasını hesaplıyoruz. Örneğimiz, 1,2,3,4,5,6,7 ortalaması 4 olduğu için sonuç olarak bize 4 verir.
    =AVERAGE(OFFSET(A:A;COUNT(A:A)-7 + MATCH(TRUE;INDEX(A:A<>0);0)-1;0))


Mükemmel cevap.
ale

iyi çalıştı, ama başka bir hücre ekledikten sonra, düzgün güncelleme?
Spongebob Squarepants

2

Yine başka bir yol:

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

explantion:

  1. tüm sayısal değerleri filtrele
  2. sort () kullanarak sütunu baş aşağı çevirin (son değerler yukarıda olacak şekilde)
  3. bu sütunun çıktısını 7 satıra sınırlayın (ARRAY_CONSTRAIN kullanarak)
  4. Ortalamayı al ...

EDIT: Yanlış anlama için özür dilerim. Yukarıdaki değer, bir sütundaki son 7 değerin değil LARGEST 7 değerlerinin ortalamasını alır. Son 7 değerin ortalamasını almak için Normal Human'ın çözümü harikadır. Daha az işleve sahip alternatif bir yol QUERY () kullanmak olabilir

A sütunundaki sayısal verileri varsayarsak, şunu deneyin:

=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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.