Değeri boş olmayan satırları say


128

Bir Google E-tablosunda: Belirli bir alanın değeri olan satırlarını nasıl sayabilirim? Şimdiye kadar bulduğum tüm ipuçları, içeriği boş olmayan (formül dahil) satırları sayan formüllere, ancak

=IF(1=2;"";"")  // Shows an empty cell

da sayılır.

Bu basit görevin çözümü nedir?


6
CountA sizin için çalışmaz mı? Ayrıca şu SO
başlığına bakın


Yanıtlar:


-12

"CountBlank" işlevini kullanarak başvurulan hücrenin boş olup olmadığını belirleyen başka bir sütun oluşturun. Ardından, yeni "CountBlank" sütununda oluşturulan değerlerin sayımını kullanın.


3
Bunu, bunun başka bir çözümü olmadığının açık bir ifadesi olarak görüyorum. Çok teşekkür ederim.
Robbit

Başka bir sütun eklemeniz gerektiğinde, hemen hemen her zaman, biraz birleştirme / bölme / birleştirme vb. İçeren bazı ekstra formüller kullanarak çözebilirsiniz, çözersem size geri döneceğim.
consideRatio

Örneğin, aşağıdaki satır, 2d hücre aralığından tek bir satır oluşturur ve bu genellikle birçok sorunu çözebilir: = split (ArrayFormula (concatenate (C3: O4 & ";")), ";") --- - sorunu çözmek için çalışmaya devam
edemiyorum

Ayrı sütunlara güvenmeden hedefi çözen bir cevap yayınladım
consideRatio

203

Az önce kullandım =COUNTIF(Range, "<>")ve boş olmayan hücreleri saydı benim için.


14
Ne yazık ki, bu formül aynı zamanda boş sonuçların formüllerine sahip hücreleri de sayar.
Dávid Veszelovszki

23
@ DávidVeszelovszki [formüller sayıldı] ile aynı sorunu yaşadım. Birlikte çözüldü=COUNTIF(Range,"?*")
shawnrad

Soru, bir aralıktaki satırların nasıl sayılacağını sormaktır. Bir aralıktaki hücreleri mi sayıyorsunuz?
AnnanFay

125
=counta(range) 
  • counta: " Bir veri kümesindeki değerlerin sayısını verir "

    Not: bir değer olarak CountAkabul ""edilir . Yalnızca boş olan hücreler (boşaltmak için bir hücrede sil tuşuna basın) sayılmaz.

    Google desteği: https://support.google.com/docs/answer/3093991

  • countblank: " Belirli bir aralıktaki boş hücre sayısını verir"

    Not: CountBlankHem boş hücreleri (bir hücreyi boşaltmak"" için sil'e basın) hem de boş olarak dönen formülü olan hücreleri dikkate alır hücreleri dikkate alır.

    Google Desteği: https://support.google.com/docs/answer/3093403

Formüller içeren bir aralığınız ""varsa, formülünüzü şuradan değiştirebilirsiniz:

=counta(range)

için:

=Counta(range) - Countblank(range)

DÜZENLEME: işlev countblank, değil countblanks, ikincisi bir hata verecektir.


5
Ne yazık ki bu, hem işlenmemiş boşlukları hem de hesaplanmış boşlukları içeren aralıklar için çalışmaz. (
Sayılmamış

3
Tatlı olumsuz oylar için teşekkürler, OP boşluklara sahip olmasının nedeninin = EĞER (1 = 2; ""; "") gibi formülden kaynaklandığından özellikle bahsetti ve özellikle şunu söyledim: " sonuç "" ... "
Delta_zulu

Soru, bir aralıktaki satırların nasıl sayılacağını sormaktır. Bir aralıktaki hücreleri mi sayıyorsunuz?
AnnanFay

38

Şimdiye kadarki en iyi çözüm olduğuna inandığım şey şu:

=CountIf(ArrayFormula(range<>""),TRUE)

İşte 3 kolay adımda nedenleri

Adım 1: Pasta Olarak Basit - Fazladan Sütun Ekleme

EniacAvenger tarafından cevap olarak uç örnekleri endişelenmeden doğru çözümü verecektir =A1<>""biz sezgisel olarak boş hücreleri düşüncenize bağlı doğru truthy / falsy değerine ulaşmak gibi görünüyor, bakire boşlukları veya oluşturulan boşlukları ya.

Bu verilere sahip olduğumuzu ve boşluk olmayanların sayısının içinde olmasını istediğimizi düşünün B2:B6:

|   |      A      |   B   |    C    |
|---|-------------|-------|---------|
| 1 | Description | Value | B1<>""  |
| 2 | Text        | H     | TRUE    |
| 3 | Number      | 1     | TRUE    |
| 4 | IF -> ""    |       | FALSE   |
| 5 | IF -> Text  | h     | TRUE    |
| 6 | Blank       |       | FALSE   |

Sütun C'ye güvenirsek, B'deki değerlerin sayısını şu şekilde elde edebilirdik:

=COUNTIF(C2:C6,True)

Adım 2: FormulaArrayDinamik olarak Ekstra Sütun oluşturmak için kullanın

Bununla birlikte, consideRatio'nun yorumu geçerlidir - fazladan bir sütuna ihtiyacınız varsa, genellikle aynı hedefi birArrayFormula sayfa alanını tüketmeden bellekte bir sütun oluşturabilen bir sütunla gerçekleştirebilirsiniz.

Yani C'yi dinamik olarak oluşturmak istiyorsak, aşağıdaki gibi bir dizi formülü kullanabiliriz:

=ArrayFormula(B2:B6<>"")

Basitçe C2'ye koyarsak, tek bir kalem vuruşuyla dikey diziyi oluşturur:

|   |      A      |   B   |    C                     |
|---|-------------|-------|--------------------------|
| 1 | Description | Value | =ArrayFormula(B2:B6<>"") |
| 2 | Text        | H     | TRUE                     |
| 3 | Number      | 1     | TRUE                     |
| 4 | IF -> ""    |       | FALSE                    |
| 5 | IF -> Text  | h     | TRUE                     |
| 6 | Blank       |       | FALSE                    |

Adım 3: Dinamik Sütundaki Değerleri Sayın

Ancak bu çözüldüğünde, artık yalnızca değerleri görüntülemek için sütuna ihtiyacımız yok.

ArrayFormulaAşağıdaki aralık sonucuna varılır: {True,True,False,True,False}.
CountIfsadece herhangi bir aralığı alır ve bu durumda True değerlerinin sayısını sayabilir.

Böylece CountIfüretilen değerleri şöyle sıralayabiliriz ArrayFormula:

=CountIf(ArrayFormula(B2:B6<>""),TRUE)

Daha fazla okuma

Bu iş parçacığındaki diğer çözümler ya aşırı karmaşıktır ya da bu test sayfasında listelediğim bazı uç durumlarda başarısız olur:

Google E-Tablo - CountA Testi - Demo

Neden CountAişe yaradığı için, cevabıma buradan bakın


4
Bu yanıt tek tam çözümdür: Oluşturulan boşlukları, gerçekten boş hücreleri ve hataları (#YOK, # BAŞV !, # DEĞER , #AD?). Ayrıca hiçbir değer olmadığında 0 döndürür
spacepickle

2
Bunu okurken biraz kafam karıştı ve yanlışlıkla bu formülün de çalıştığını keşfettim ... = CountIf (ArrayFormula (B2: B6 <> ""), TRUE) ... Lütfen beni yanlış anlamayın, bu cevap en iyisi ve daha fazla oy verilmelidir.
twindham

2
@twindham, bu cevabın bloklarını oluşturmak açısından, her mantıksal bileşeni sağlam tutmanın ve önerdiğiniz gibi ArrayFormula(...)içindeki değerler dizisini döndürmek için yeniden sıralamanın muhtemelen daha kolay olduğunu kabul etti CountIf. Cevabı ve Elektronik Tablo demosunu güncelledim. İkisi de aynı şeyi yapacak, ancak temizlik iyiliğin yanında.
KyleMit

Soru, bir aralıktaki satırların nasıl sayılacağını sormaktır. Boş olmayan hücreleri tek bir sütunda mı sayıyorsunuz? Yaklaşımınız birden çok sütun üzerinde çalışabilir mi?
AnnanFay

19

Benim için yanıtların hiçbiri, hem bakire hücreleri hem de bir formüle dayalı olarak boş olan hücreleri içeren aralıklar için işe yaramadı (ör. =IF(1=2;"";""))

Bunu benim için çözen şudur:

=COUNTA(FILTER(range, range <> ""))


Bir sütun "" değerini döndüren formüller içeriyorsa harika bir çözüm! Çok teşekkürler
user1561325

Ne yazık ki, eğer benziyor Filter()herhangi unsurları bulamazsa, bu dönecektir #N/Ahangi COUNTA()bir öğesi olarak davranır ve sayım sıfır olmalıdır bile bu nedenle her zaman, 1 dönecektir. Google E-Tablolar'daki örnek
KyleMit

7
@KyleMit Aralığa sabit bir değer ekleyerek ve=COUNTA(filter({1;range},{1;range}<>"")) - 1
spacepickle

Soru, bir aralıktaki satırların nasıl sayılacağını sormaktır. Bir aralıktaki hücreleri sayıyorsunuz. Bir dizi satıra uygulamayı denerseniz bu kod bozulur.
AnnanFay

9

Yogi Anand tarafından Google'da bulduğum bir çözüm kullanılarak çözüldü: https://productforums.google.com/d/msg/docs/3qsR2m-1Xx8/sSU6Z6NYLOcJ

Aşağıdaki örnek, A3: C aralığındaki boş olmayan satırların sayısını sayar, formüldeki her iki aralığı da ilgilendiğiniz aralığa göre güncellemeyi unutmayın.

=ArrayFormula(SUM(SIGN(MMULT(LEN(A3:C), TRANSPOSE(SIGN(COLUMN(A3:C)))))))

Ayrıca döngüsel bağımlılıklardan kaçındığınızdan emin olun, örneğin A: C'deki boş olmayan satırların sayısını sayarsanız ve bu formülü A veya C sütununa yerleştirirseniz gerçekleşir.


1
Çok daha temiz bir çözüm buldum, yeni bir cevap olarak gönderdim.
Dávid Veszelovszki

1
İçinde boş olmayan hücre bulunan satırların sayısını saymak ve bir aralıktaki boş olmayan hücrelerin sayısını saymamak için soruyu yanıtlayan tek çözüm.
Kpym

7

Benim için çalışıyor:

=SUMPRODUCT(NOT(ISBLANK(F2:F)))

Tüm boş olmayan hücrelerin Sayısı F2 için sütunun sonuna


5

Aralık göz önüne alındığında A:A, id şunu önerir:

=COUNTA(A:A)-(COUNTIF(A:A,"*")-COUNTIF(A:A,"?*"))

Sorun, COUNTA'nın tam olarak sıfır uzunlukta dizeleri olan hücre sayısına göre fazla sayımıdır "".

Çözüm, tam olarak bu hücrelerin sayısını bulmaktır. Bu, tüm metin hücrelerini arayarak ve en az bir karakter içeren tüm metin hücrelerini çıkararak bulunabilir.

  • COUNTA (A: A): değeri olan hücreler; "" gerçekten boş hücreler ancak hariç tutan hücreler
  • EĞERSAY (A: A, "*"): ""gerçekten boş hücreler dahil ancak hariç tutulan metin olarak tanınan hücreler
  • EĞERSAY (A: A, "? *"): En az bir karakter içeren metin olarak tanınan hücreler

Bu, değerin COUNTIF(A:A,"*")-COUNTIF(A:A,"?*")metin hücrelerinin sayısı eksi en az bir karakter içeren metin hücrelerinin sayısı, yani tam olarak içeren hücrelerin sayısı olması gerektiği anlamına gelir""


@KyleMit demo sayfasını kullanarak, bu formülün hala sayımları aştığını buldum çünkü hatalı hücreleri içerecek
spacepickle

Sıfır uzunlukta bir dize içeren bir hücre ile hiçbir şey içermeyen bir hücre arasında bir fark var mı? İnsanların bilgisayarlara güvenmemesini sağlayan şey budur. . . Neden güzel şeylere sahip olamayacağımızı anlıyor musun?
Cheeso

Soru, bir aralıktaki satırların nasıl sayılacağını sormaktır. Bir aralıktaki hücreleri mi sayıyorsunuz?
AnnanFay

5

Benim için çalışan daha basit bir çözüm:

=COUNTIFS(A:A;"<>"&"")

Boş olmayan sayıları, dizeleri, tarihleri ​​vb. Sayar


5
= EĞERSAY (A: A, "<>")
Tom

Soru, bir aralıktaki satırların nasıl sayılacağını sormaktır. Bir aralıktaki hücreleri mi sayıyorsunuz?
AnnanFay

3

Görebildiğim kadarıyla, buradaki çözümlerin çoğu, içinde boş olmayan hücre bulunan satırların sayısını değil, boş olmayan hücrelerin sayısını sayıyor.

Ürün yelpazesi için olası bir çözüm B3:E29, örneğin

=SUM(ArrayFormula(IF(B3:B29&C3:C29&D3:D29&E3:E29="";0;1)))

Burada (satır boşsa) ve (başka) ArrayFormula(IF(B3:B29&C3:C29&D3:D29&E3:E29="";0;1))sütununu döndürür .01

ConsideRatio'nun cevabında bir diğeri verilmiştir .


2

Apps Komut Dosyası'nı (Araçlar> Komut dosyası düzenleyici) kullanarak özel bir işlev tanımlayabilirsiniz, örneğin numNonEmptyRows:

function numNonEmptyRows(range) {
  Logger.log("inside");
  Logger.log(range);
  if (range && range.constructor === Array) {
    return range.map(function(a){return a.join('')}).filter(Boolean).length
  }
  else {
    return range ? 1 : 0;
  }
}

Ve sonra =numNonEmptyRows(A23:C25), aralıktaki boş olmayan satırların sayısını saymak için böyle bir hücrede kullanın A23:C25;



1

Bu tür şeyleri yapmanın çok esnek bir yolu ARRAYFORMULA kullanmaktır.

Örnek olarak, boş olmayan dizeleri (metin alanları) saymak istediğinizi varsayalım, bu kodu kullanabilirsiniz:

=ARRAYFORMULA(SUM(IF(Len(B3:B14)>0, 1, 0)))

Burada olan şey, "ArrayFormula" nın bir dizi değer üzerinde işlem yapmanıza izin vermesidir. TOPLA işlevini kullanarak kümenin herhangi bir değerini toplamak için "ArrayFormula" öğesini belirtirsiniz. "If" yan tümcesi yalnızca "boş" veya "boş değil", boş değil 1 ve aksi halde 0'ı kontrol etmek için kullanılır. "Len", farklı metin alanlarının uzunluğunu döndürür, kontrol etmek istediğiniz kümeyi (aralığı) tanımladığınız yer burasıdır. Son olarak, "ArrayFormula", "len" in 0'dan fazla döndürdüğü küme (aralık) içindeki her alan için 1 toplayacaktır.

Herhangi bir başka koşulu kontrol etmek istiyorsanız, sadece IF yan tümcesinin ilk bağımsız değişkenini değiştirin.

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.