Hitung baris dengan nilai tidak kosong


128

Dalam Google Spreadsheet: Bagaimana saya bisa menghitung baris area tertentu yang memiliki nilai? Semua petunjuk tentang ini saya temukan hingga sekarang mengarah ke rumus yang menghitung baris yang tidak mengandung konten kosong (termasuk rumus), tetapi sel dengan

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

dihitung juga.

Apa solusi untuk tugas sederhana ini?


6
Tidakkah CountA bekerja untuk Anda? Lihat juga utas SO ini: stackoverflow.com/questions/12519073/...
Ozair Kafray


Kemungkinan duplikat dari sel Count yang berisi teks apa pun
Rubén

Jawaban:


-12

Buat kolom lain yang menentukan apakah sel yang direferensikan kosong menggunakan fungsi "CountBlank". Kemudian gunakan hitung pada nilai-nilai yang dibuat di kolom "CountBlank" yang baru.


3
Saya menganggap ini sebagai pernyataan yang jelas bahwa tidak ada solusi lain untuk ini. Terima kasih banyak.
Robbit

Ketika Anda perlu menambahkan kolom lain, Anda hampir selalu dapat menyelesaikannya dengan menggunakan beberapa formula tambahan seperti mengandung beberapa concatinate / split / join dll, Anda tidak akan dapat membalasnya jika saya menyelesaikannya.
consideRatio

Misalnya, baris berikut membuat satu baris tunggal dari rentang sel 2d, yang seringkali dapat memecahkan banyak masalah: = split (ArrayFormula (concatenate (C3: O4 & ";" ")),"; ") --- - sakit terus bekerja pada pemecahan masalah
consideRatio

Saya memposting jawaban yang memecahkan tujuan tanpa bergantung pada kolom terpisah
consideRatio

203

Saya hanya menggunakan =COUNTIF(Range, "<>")dan menghitung sel yang tidak kosong untuk saya.


14
Sayangnya, rumus ini juga menghitung sel dengan rumus hasil kosong.
Dávid Veszelovszki

23
Saya memiliki masalah yang sama dengan @ DávidVeszelovszki [rumus dihitung]. Saya diselesaikan dengan=COUNTIF(Range,"?*")
shawnrad

Pertanyaannya adalah bertanya bagaimana cara menghitung baris dalam suatu rentang. Anda menghitung sel dalam rentang?
AnnanFay

124
=counta(range) 
  • counta: "Mengembalikan hitungan jumlah nilai dalam dataset"

    Catatan: CountAanggap ""sebagai nilai . Hanya sel yang kosong (tekan delete dalam sel untuk mengosongkannya) tidak dihitung.

    Dukungan Google: https://support.google.com/docs/answer/3093991

  • countblank: "Mengembalikan jumlah sel kosong dalam rentang yang diberikan"

    Catatan: CountBlankmenganggap sel kosong (tekan hapus untuk mengosongkan sel) dan sel yang memiliki rumus yang kembali ""menjadi sel kosong .

    Dukungan Google: https://support.google.com/docs/answer/3093403

Jika Anda memiliki rentang yang menyertakan rumus yang menghasilkan "", maka Anda dapat mengubah rumus dari

=counta(range)

untuk:

=Counta(range) - Countblank(range)

EDIT: fungsi ini countblank, bukan countblanks, yang terakhir akan memberikan kesalahan.


5
Sayangnya, ini tidak berfungsi untuk rentang yang mencakup kosong perawan dan kosong dihitung. (Ini mengurangkan blanko perawan yang tidak dihitung dari nilai COUNTA.)
Dávid Veszelovszki

3
Terima kasih untuk downvotes yang manis, OP secara khusus menyebutkan bahwa alasan dia memiliki kekosongan adalah karena rumus seperti = IF (1 = 2; ""; ""), dan saya secara khusus menyebutkan: "Jika Anda memiliki rentang yang mencakup rumus yang menghasilkan "" ... "
Delta_zulu

Pertanyaannya adalah bertanya bagaimana cara menghitung baris dalam suatu rentang. Anda menghitung sel dalam rentang?
AnnanFay

38

Inilah yang saya yakini sebagai solusi terbaik sejauh ini:

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

Inilah sebabnya dalam 3 langkah mudah

Langkah 1: Sederhana Sebagai Pai - Tambahkan Kolom Ekstra

The jawaban dengan eniacAvenger akan menghasilkan solusi yang tepat tanpa khawatir tentang kasus tepi sebagai =A1<>""tampaknya tiba di truthy / nilai falsy benar didasarkan pada bagaimana kita secara intuitif berpikir sel kosong, baik kosong perawan atau dibuat kosong.

Jadi bayangkan kita memiliki data ini dan kami ingin Hitungan kosong di 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   |

Jika kami mengandalkan Kolom C , kami bisa mendapatkan jumlah nilai dalam B seperti ini:

=COUNTIF(C2:C6,True)

Langkah 2: Gunakan FormulaArrayuntuk secara dinamis membuat Kolom Ekstra

Namun, komentar consideRatio adalah komentar yang valid - jika Anda membutuhkan kolom tambahan, Anda sering dapat mencapai tujuan yang sama dengan ArrayFormulayang dapat membuat kolom dalam memori tanpa menghabiskan ruang lembar.

Jadi jika kita ingin membuat C secara dinamis, kita bisa menggunakan rumus array seperti ini:

=ArrayFormula(B2:B6<>"")

Jika kita cukup meletakkannya di C2, itu akan membuat array vertikal dengan satu goresan pena:

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

Langkah 3: Hitung Nilai dalam Kolom Dinamis

Tetapi dengan itu diselesaikan, kita tidak perlu lagi kolom untuk hanya menampilkan nilai.

ArrayFormulaakan memutuskan untuk berbagai berikut: {True,True,False,True,False}.
CountIfhanya mengambil dalam kisaran apa pun dan dalam hal ini dapat menghitung jumlah nilai True.

Jadi kita bisa membungkus CountIfnilai-nilai yang dihasilkan oleh ArrayFormulaseperti ini:

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

Bacaan lebih lanjut

Solusi lain di utas ini terlalu rumit, atau gagal dalam kasus tepi tertentu yang telah saya sebutkan dalam lembar tes ini:

Google Spreadsheet - Uji CountA - Demo

Untuk alasan mengapa CountAbekerja dengan cara yang payah seperti itu, lihat jawaban saya di sini


4
Jawaban ini adalah satu-satunya solusi lengkap: Berhasil menghitung hanya sel dengan teks (termasuk spasi), angka, dan nilai TRUE / FALSE sementara tidak termasuk menghasilkan kosong, sel benar-benar kosong, dan kesalahan (# N / A, #REF !, #VALUE , #NAME?). Ini juga akan mengembalikan 0 di mana tidak ada nilai
spacepickle

2
Saya agak bingung membaca ini, dan secara tidak sengaja menemukan bahwa rumus ini juga berfungsi ... = CountIf (ArrayFormula (B2: B6 <> ""), TRUE) ... Tolong, jangan salah paham, jawaban ini adalah yang terbaik, dan harus lebih ditingkatkan.
twindham

2
@twindham, setuju, bahwa dalam hal membangun blok jawaban ini yang mungkin lebih mudah untuk menjaga setiap komponen logis tetap utuh dan menyusun ulang ArrayFormula(...)untuk mengembalikan array nilai di dalamnya CountIfseperti yang Anda sarankan. Saya telah memperbarui jawabannya dan demo Spreadsheet. Mereka berdua akan melakukan hal yang sama, tetapi kebersihan ada di sebelahnya.
KyleMit

Pertanyaannya adalah bertanya bagaimana cara menghitung baris dalam suatu rentang. Anda menghitung sel non-kosong dalam satu kolom? Bisakah pendekatan Anda bekerja pada banyak kolom?
AnnanFay

19

Bagi saya, tidak ada jawaban yang berfungsi untuk rentang yang mencakup sel perawan dan sel yang kosong berdasarkan rumus (misalnya =IF(1=2;"";""))

Yang memecahkannya bagi saya adalah ini:

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


Solusi hebat jika kolomb berisi formual yang mengembalikan nilai ""! Terima kasih banyak
user1561325

Sayangnya, sepertinya jika Filter()tidak menemukan elemen, itu akan mengembalikan #N/Ayang COUNTA()memperlakukan sebagai elemen dan akan selalu mengembalikan 1, bahkan jika hitungnya harus nol. Contoh di Google Sheets
KyleMit

7
@KyleMit Anda dapat menyingkirkan masalah jumlah nol dengan menambahkan nilai konstan ke kisaran dan mengurangi 1 dari jumlah dengan=COUNTA(filter({1;range},{1;range}<>"")) - 1
spacepickle

Pertanyaannya adalah bertanya bagaimana cara menghitung baris dalam suatu rentang. Anda menghitung sel dalam rentang. Kode ini rusak jika Anda mencoba menerapkannya ke berbagai baris.
AnnanFay

9

Dipecahkan menggunakan solusi yang saya temukan googling oleh Yogi Anand: https://productforums.google.com/d/msg/docs/3qsR2m-1Xx8/sSU6Z6NYLOcJ

Contoh di bawah ini menghitung jumlah baris tidak kosong dalam rentang A3: C, ingatlah untuk memperbarui kedua rentang dalam rumus dengan rentang minat Anda.

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

Pastikan juga untuk menghindari dependensi melingkar, itu akan terjadi jika Anda misalnya menghitung jumlah baris yang tidak kosong di A: C dan tempatkan rumus ini di kolom A atau C.


1
Menemukan solusi yang jauh lebih bersih, saya mempostingnya sebagai jawaban baru.
Dávid Veszelovszki

1
Satu-satunya solusi yang menjawab pertanyaan untuk menghitung jumlah baris dengan sel yang tidak kosong di dalamnya, dan tidak menghitung jumlah sel yang tidak kosong dalam rentang.
Kpym

7

Ini bekerja untuk saya:

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

Hitung semua sel yang tidak kosong dari F2 hingga akhir kolom


5

Dengan kisaran tersebut A:A, Id menyarankan:

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

Masalahnya adalah COUNTA menghitung secara persis dengan jumlah sel dengan string nol panjang "".

Solusinya adalah menemukan jumlah sel-sel ini secara tepat. Ini dapat ditemukan dengan mencari semua sel teks dan mengurangi semua sel teks dengan setidaknya satu karakter

  • COUNTA (A: A): sel dengan nilai, termasuk ""tetapi tidak termasuk sel yang benar-benar kosong
  • COUNTIF (A: A, "*"): sel yang dikenali sebagai teks, termasuk ""tetapi tidak termasuk sel yang benar-benar kosong
  • COUNTIF (A: A, "? *"): Sel dikenali sebagai teks dengan setidaknya satu karakter

Ini berarti bahwa nilainya COUNTIF(A:A,"*")-COUNTIF(A:A,"?*")harus berupa jumlah sel teks dikurangi jumlah sel teks yang memiliki setidaknya satu karakter, yaitu jumlah sel yang mengandung""


Menggunakan lembar demo @KyleMit, saya menemukan rumus ini masih terlalu penting karena akan menyertakan sel dengan kesalahan
spacepickle

Ada perbedaan antara sel yang berisi string panjang nol dan sel yang tidak mengandung apa pun? Inilah yang membuat orang tidak percaya komputer. . . Apakah Anda mengerti mengapa kami tidak dapat memiliki hal-hal yang menyenangkan?
Cheeso

Pertanyaannya adalah bertanya bagaimana cara menghitung baris dalam suatu rentang. Anda menghitung sel dalam rentang?
AnnanFay

5

Solusi sederhana yang bekerja untuk saya:

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

Itu menghitung angka, string, tanggal, dll yang tidak kosong


5
dapat disederhanakan dalam bentuk seperti = COUNTIF (A: A, "<>")
Tom

Pertanyaannya adalah bertanya bagaimana cara menghitung baris dalam suatu rentang. Anda menghitung sel dalam rentang?
AnnanFay

3

Sejauh yang saya bisa lihat, sebagian besar solusi di sini menghitung jumlah sel yang tidak kosong, dan bukan jumlah baris dengan sel yang tidak kosong di dalamnya.

Salah satu solusi yang mungkin untuk rentang B3:E29tersebut misalnya

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

Di sini ArrayFormula(IF(B3:B29&C3:C29&D3:D29&E3:E29="";0;1))mengembalikan kolom 0(jika baris kosong) dan 1(lain).

Satu lagi diberikan dalam jawaban consideRatio .


2

Anda dapat mendefinisikan fungsi khusus menggunakan Apps Script (Tools> Editor Script) yang dipanggil misalnya 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;
  }
}

Dan kemudian menggunakannya dalam sel seperti ini =numNonEmptyRows(A23:C25)untuk menghitung jumlah baris yang tidak kosong dalam rentang A23:C25;



1

Cara yang sangat fleksibel untuk melakukan hal-hal semacam itu adalah menggunakan ARRAYFORMULA.

Sebagai contoh bayangkan Anda ingin menghitung string yang tidak kosong (bidang teks) Anda dapat menggunakan kode ini:

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

Apa yang terjadi di sini adalah "ArrayFormula" memungkinkan Anda beroperasi di atas serangkaian nilai. Menggunakan fungsi SUM Anda menunjukkan "ArrayFormula" untuk menjumlahkan nilai set. Klausa "Jika" hanya digunakan untuk memeriksa "kosong" atau "tidak kosong", 1 untuk tidak kosong dan 0 sebaliknya. "Len" mengembalikan panjang bidang teks yang berbeda, ada tempat Anda menentukan set (rentang) yang ingin Anda periksa. Akhirnya "ArrayFormula" akan menjumlahkan 1 untuk setiap bidang di dalam set (kisaran) di mana "len" mengembalikan lebih dari 0.

Jika Anda ingin memeriksa kondisi lain, cukup modifikasi argumen pertama klausa IF.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.