Bagaimana cara menghitung jumlah nilai yang berbeda dalam suatu rentang?

32

Saya punya tabel besar yang sudah diatur menggunakan filter, dll. Saya ingin menambahkan ringkasan di bawah kolom tertentu yang berisi jumlah nilai berbeda di kolom itu.

Tidak ada fungsi =COUNTDISTINCT(A2:A100)jadi apa yang bisa saya lakukan? (Excel 2003)

Saya tidak bisa menggunakan jawaban untuk pertanyaan serupa ini karena saya tidak ingin mengubah tabel atau pemfilteran. Saya perlu tambahan di lembar kerja, bukan modifikasi .

Torben Gundtofte-Bruun
sumber

Jawaban:

31
=SUMPRODUCT((A2:A100 <> "")/COUNTIF(A2:A100,A2:A100 & ""))

akan melakukannya tanpa harus menggunakan rumus array.

Lance Roberts
sumber
4
Bagaimana / mengapa ini bekerja ???
RBarryYoung
4
@RBarryYoung, SUMPRODUCT bekerja seperti fungsi Array tanpa menjadi satu. Meskipun dapat melakukan lebih dari apa yang digunakan di sini, di sini ia hanya memeriksa setiap contoh kolom, dan menghasilkan nilai skala untuk setiap nilai berbeda berdasarkan pada berapa banyak iterasi yang ada di dalam kolom. Jadi jika ada dua contoh 'a', itu akan menambahkan 1/2 dan 1/2 untuk mendapatkan 1. Jadi untuk setiap nilai berbeda, Anda akan menambahkan satu ke jumlah.
Lance Roberts
1
Ini adalah bagian yang saya mengalami masalah dengan: " datang dengan nilai skala untuk setiap nilai berbeda berdasarkan berapa banyak iterasi yang ada di kolom. " Jika saya mengerti ini, maka SUMPRODUCT secara efektif menjalankan loop seperti for each [i] in A2:A100 DO:{ sum += (([i]<>"")/COUNTIF(A2:A100,[i])) }, kan ? Saya mengalami sedikit kesulitan dalam memahami bagaimana cara mengetahui untuk menghitung baik parameter conditional dan ke-2 COUNTIF, tetapi tidak pada parameter COUNTIF pertama? Apakah sihir DWIM ini didokumentasikan / dijelaskan di mana saja oleh MS? Alangkah baiknya mengetahui cara menulis ini dengan sengaja.
RBarryYoung
1
Ya, Anda mendapatkannya, iterates array untuk apa yang biasanya menjadi nilai tunggal, mengalikan semua parameternya (yang dalam hal ini hanya 1), lalu menambahkan iterasi. SUMPRODUCTs bisa menjadi sangat kompleks, tetapi mereka adalah salah satu fungsi yang paling berguna di Excel, ia dapat melakukan keajaiban harfiah.
Lance Roberts
4
Ini gagal jika input berisi entri kosong. Memperbaiki semudah demoed di youtube adalah ini: =SUMPRODUCT((A2:A100<>"")/COUNTIF(A2:A100,A2:A100&"")). Ini memastikan bahwa COUNTIFtidak pernah mengembalikan 0 untuk baris kosong, yang akan menghasilkan DIV/0kesalahan.
cfi
7

Saya menemukan solusi di sini yang tampaknya menjadi jalan memutar yang luar biasa untuk menyelesaikannya. Tapi hei, itu berhasil ...

= SUM (JIKA (COUNTIF (A2: A100, A2: A100) = 0, "", 1 / COUNTIF (A2: A100, A2: A100)))

lalu tekan Ctrl+ Shift+ Enter. Menekan hanya Enterakan memberikan hasil yang salah.

Torben Gundtofte-Bruun
sumber
Saya ingin melihat jawaban lain! Apakah ada cara yang lebih baik dari ini untuk menyelesaikannya?
Torben Gundtofte-Bruun
1
Tidak, itu cara terbaik. Saya tidak yakin mengapa ada JIKA di sana. Anda cukup menggunakan = SUM (1 / COUNTIF (A2: A100, A2: A100)) yang dimasukkan
dkusleika
2
@dkusleika IF tampaknya ada di sana untuk mencegah pembagian dengan kesalahan nol. Seperti disebutkan pada halaman yang ditautkan ke atas, ini diperlukan jika rentangnya berisi sel-sel kosong, jika tidak Anda dapat membiarkan IF keluar.
Bavi_H
1

Artikel ini menunjukkan ini untuk nilai teks:

=SUM(IF(FREQUENCY(IF(LEN(C3:C25)>0,MATCH(C3:C25,C3:C25,0),""), IF(LEN(C3:C25)>0,MATCH(C3:C25,C3:C25,0),""))>0,1))

dan ini untuk nilai numerik:

=SUM(IF(FREQUENCY(C3:C25, C3:C25)>0,1))

Artikel ini menunjukkan rumus yang sama, tetapi juga menunjukkan metode menggunakan filter.

Hitung jumlah nilai unik dengan menggunakan filter

Anda dapat menggunakan Filter Tingkat Lanjut untuk mengekstraksi nilai unik dari kolom data dan menempelkannya ke lokasi baru. Kemudian Anda bisa menggunakan fungsi ROWS untuk menghitung jumlah item dalam rentang baru.

  1. Pastikan bahwa baris pertama dalam kolom memiliki tajuk kolom.
  2. Pada menu Data, arahkan ke Filter, lalu klik Filter Lanjutan.
  3. Di kotak dialog Filter tingkat lanjut, klik Salin ke lokasi lain.
  4. Jika rentang yang Anda hitung belum dipilih, hapus informasi apa pun di kotak Daftar rentang lalu klik kolom (atau pilih rentang) yang berisi data Anda.
  5. Di kotak Salin ke, hapus semua informasi di dalam kotak atau klik di dalam kotak, dan kemudian klik kolom kosong di mana Anda ingin menyalin nilai unik.
  6. Pilih kotak centang Unik catatan saja, dan klik OK.

    Nilai unik dari rentang yang dipilih disalin ke kolom baru.

  7. Di sel kosong di bawah sel terakhir dalam rentang, masukkan fungsi ROWS. Gunakan rentang nilai unik yang baru saja Anda salin sebagai argumen. Misalnya, jika rentang nilai unik adalah B1: B45, lalu masukkan:
    = ROWS (B1: B45)

Dijeda sampai pemberitahuan lebih lanjut.
sumber
1

= SUM (1 / COUNTIF (A2: A100; A2: A100))

Konfirmasikan dengan Ctrl + Shift + Enter

Untuk setiap sel, ia menghitung berapa kali terjadi, dan menjumlahkan invers dari semua nilai ini. Misalkan beberapa string atau angka muncul 5 kali. Kebalikannya adalah 0,2 yang dijumlahkan 5 kali, jadi 1 ditambahkan. Pada akhirnya memberikan jumlah nilai yang berbeda.

Catatan: tidak berfungsi saat kosong!

pengguna221470
sumber
0

Coba tautan ini. Ini menunjukkan cara menghitung nilai unik dalam daftar yang menghilangkan sel kosong.

http://www.functioninexcel.com/lists-arrays/count-unique-values-in-a-list/

= jumlah (jika (frekuensi (cocok (Daftar, Daftar, 0), cocok (Daftar, Daftar, 0))> 0, 1))

Di mana "Daftar" adalah rentang sel Anda misalnya:

Daftar = $ A $ 2: $ A $ 12 OR- Daftar = offset ($ A $ 1 ,,, pertandingan (rept ("z", 255), $ A: $ A)) -OR- Daftar = offset ($ A $ 1, ,, kecocokan (nilai (rept ("9", 255)), $ A: $ A))

Charles Hunt
sumber
0

= SUM (JIKA (FREKUENSI (JIKA (SUBTOTAL (3, OFFSET (A2: A100, ROW), ROW (A2: A100) -ROW (A2), 0,1)), MATCH ("~" & A2: A100, A2: A100 & " ", 0)), ROW (A2: A100) -ROW (A2) +1), 1))

Pastikan untuk menekan CONTROL + SHIFT + ENTER setelah menempelkan formula ini. Ini untuk rentang A2: A100, sesuaikan rentangnya.

Vlada
sumber