Tabel Pivot Sederhana untuk Menghitung Nilai Unik


135

Ini sepertinya Tabel Pivot sederhana untuk dipelajari. Saya ingin menghitung nilai unik untuk nilai tertentu yang saya kelompokkan.

Misalnya, saya punya ini:

ABC   123
ABC   123
ABC   123
DEF   456
DEF   567
DEF   456
DEF   456

Yang saya inginkan adalah tabel pivot yang menunjukkan ini kepada saya:

ABC   1
DEF   2

Tabel pivot sederhana yang saya buat hanya memberi saya ini (hitungan berapa banyak baris):

ABC   3
DEF   4  

Tapi saya ingin jumlah nilai uniknya.

Apa yang sebenarnya saya coba lakukan adalah mencari tahu nilai mana di kolom pertama yang tidak memiliki nilai yang sama di kolom kedua untuk semua baris. Dengan kata lain, "ABC" adalah "baik", "DEF" adalah "buruk"

Saya yakin ada cara yang lebih mudah untuk melakukannya tetapi saya pikir saya akan mencoba tabel pivot ...


9
Perhatikan bahwa untuk versi excel terbaru, jawaban ini paling nyaman.
Dennis Jaheruddin

Jawaban:


108

Sisipkan kolom ke-3 dan di sel C2tempelkan rumus ini

=IF(SUMPRODUCT(($A$2:$A2=A2)*($B$2:$B2=B2))>1,0,1)

dan salin. Sekarang buat poros Anda berdasarkan kolom ke-1 dan ke-3. Lihat snapshot

masukkan deskripsi gambar di sini


+1 Saya rasa ini sedikit lebih mudah daripada solusi saya karena tidak memerlukan nilai khusus untuk baris pertama
lc.

2
Teknik yang bagus. Saya tidak tahu tentang yang ini. Anda dapat melakukan hal yang sama dengan fungsi array =IF(SUM((A$2:A2=A2)*(B$2:B2=B2)) > 1, 0, 1)(tekan Ctrl-Shift-Enter saat memasukkan rumus sehingga rumus tersebut berlaku {}di sekitarnya).
ErikE

Jawaban universal, tidak membutuhkan fitur khusus. Formula sederhana yang bagus.
Alberto De Caro

Ada gagasan tentang bagaimana memperluas ini ke situasi dengan tiga kolom?
tumultous_rooster

13
Perhatikan bahwa jawaban ini TIDAK akan memberikan solusi yang benar jika Anda memfilter beberapa baris menggunakan opsi Tabel Pivot. Misalkan baris pertama disaring. Jumlah ABC kemudian akan menjadi 0!
jarlemag

251

UPDATE: Anda dapat melakukan ini sekarang secara otomatis dengan Excel 2013. Saya telah membuat ini sebagai jawaban baru karena jawaban saya sebelumnya sebenarnya memecahkan masalah yang sedikit berbeda.

Jika Anda memiliki versi tersebut, pilih data Anda untuk membuat tabel pivot, dan saat Anda membuat tabel, pastikan kotak centang 'Tambahkan data ini ke Model Data' dicentang (lihat di bawah).

Centang kotak di samping 'Tambahkan data ini ke Model Data'

Kemudian, saat tabel pivot Anda terbuka, buat baris, kolom, dan nilai Anda secara normal. Kemudian klik bidang tempat Anda ingin menghitung jumlah berbeda dan edit Pengaturan Nilai Bidang: Edit pengaturan nilai bidang

Terakhir, gulir ke bawah ke opsi terakhir dan pilih 'Hitungan Berbeda'. Pilih opsi 'Hitungan Berbeda'

Ini harus memperbarui nilai tabel pivot Anda untuk menampilkan data yang Anda cari.


5
@MichaelK jauh lebih baik, jika Anda memiliki Excel 2013
jrharshath

3
Bisakah ini juga dilakukan pada tabel pivot yang ada, jadi kita tidak perlu membuat 200+ tabel untuk mendapatkan akses ke fungsionalitas penghitungan yang berbeda?
Louisa

12
Hanya FYI: jika Anda belum menyimpan file Anda sebagai file Excel (.xlsx) (misalnya: Anda membuka file .csv), opsi untuk "Tambahkan data ini ke Model Data" dinonaktifkan / berwarna abu-abu . Solusi sederhananya adalah dengan menyimpan file sebagai file Excel.
PonyEars

9
Apakah ini tidak didukung di Mac? Opsi ini tidak muncul untuk saya. Saya menggunakan versi 15.27.
jkupczak

4
Opsi ini memang tidak ada di Mac, karena Model Data pada umumnya adalah fitur khusus Windows.
Tomty

10

Saya ingin memberikan opsi tambahan ke dalam campuran yang tidak memerlukan rumus tetapi mungkin berguna jika Anda perlu menghitung nilai unik dalam kumpulan di dua kolom berbeda. Menggunakan contoh asli, saya tidak memiliki:

ABC   123  
ABC   123  
ABC   123   
DEF   456  
DEF   567  
DEF   456  
DEF   456

dan ingin itu muncul sebagai:

ABC   1  
DEF   2

Tapi sesuatu yang lebih seperti:

ABC   123  
ABC   123  
ABC   123  
ABC   456  
DEF   123  
DEF   456  
DEF   567  
DEF   456  
DEF   456

dan ingin itu muncul sebagai:

ABC  
   123    3  
   456    1  
DEF  
   123    1  
   456    3  
   567    1

Saya menemukan cara terbaik untuk memasukkan data saya ke dalam format ini dan kemudian dapat memanipulasinya lebih lanjut adalah dengan menggunakan yang berikut ini:

masukkan deskripsi gambar di sini

Setelah Anda memilih 'Running total in', lalu pilih tajuk untuk kumpulan data sekunder (dalam hal ini adalah tajuk atau judul kolom dari kumpulan data yang mencakup 123, 456 dan 567). Ini akan memberi Anda nilai maksimal dengan jumlah total item dalam kumpulan itu, dalam kumpulan data utama Anda.

Saya kemudian menyalin data ini, menempelkannya sebagai nilai, lalu meletakkannya di tabel pivot lain untuk memanipulasinya dengan lebih mudah.

FYI, saya memiliki sekitar seperempat juta baris data jadi ini bekerja jauh lebih baik daripada beberapa pendekatan rumus, terutama yang mencoba membandingkan dua kolom / kumpulan data karena terus merusak aplikasi.


Saya memiliki masalah yang sama sekali berbeda, tetapi jawaban ini hanya mengarahkan saya ke arah yang benar. Terima kasih.
jtolle

jawaban ini sesuai dengan kebutuhan saya karena saya memiliki 500.000 baris yang saya perlukan untuk menerapkan rumus dan komputer saya kehabisan memori jika saya mencobanya. Terima kasih!
cauldyclark

6

Saya menemukan pendekatan termudah adalah dengan menggunakan Distinct Countopsi di bawah Value Field Settings( klik kiri bidang di Valuespanel). Opsi untuk Distinct Countada di bagian paling bawah daftar.

Lokasi tempat mengklik

Berikut adalah sebelum (TOP; normal Count) dan sesudah (BAWAH; Distinct Count)

MENGHITUNG

JUMLAH BERBEDA


3
Mulai Office 2016: Agar dapat menggunakan fitur ini, tabel pivot harus dibuat dengan mencentang "Tambahkan data ini ke Model Data".
Leo


3

Tabel tidak perlu diurutkan agar rumus berikut mengembalikan 1 untuk setiap nilai unik yang ada.

dengan asumsi rentang tabel untuk data yang disajikan dalam pertanyaan adalah A1: B7 masukkan rumus berikut di Sel C1:

=IF(COUNTIF($B$1:$B1,B1)>1,0,COUNTIF($B$1:$B1,B1))

Salin rumus itu ke semua baris dan baris terakhir akan berisi:

=IF(COUNTIF($B$1:$B7,B7)>1,0,COUNTIF($B$1:$B7,B7))

Ini menghasilkan angka 1 yang dikembalikan untuk pertama kalinya sebuah rekor ditemukan dan 0 untuk semua waktu sesudahnya.

Cukup jumlahkan kolom di tabel pivot Anda


2
Jika Anda memiliki kumpulan data yang besar, gunakan =IF(COUNTIF($B$1:$B1,B1),1,0)- dengan cara ini, countif hanya dijalankan sekali!
Peter Albert

2

Pendekatan saya terhadap masalah ini sedikit berbeda dari yang saya lihat di sini, jadi saya akan berbagi.

  1. (Buat salinan data Anda terlebih dahulu)
  2. Gabungkan kolom
  3. Hapus duplikat pada kolom gabungan
  4. Terakhir - pivot pada set yang dihasilkan

Catatan: Saya ingin menyertakan gambar untuk membuatnya lebih mudah dipahami tetapi tidak bisa karena ini adalah posting pertama saya;)


1

Jawaban Siddharth luar biasa.

Namun , teknik ini dapat menemui masalah saat bekerja dengan kumpulan data yang besar (komputer saya berhenti pada 50.000 baris). Beberapa metode yang tidak terlalu intensif prosesor:

Pemeriksaan keunikan tunggal

  1. Urutkan berdasarkan dua kolom (A, B dalam contoh ini)
  2. Gunakan rumus yang melihat lebih sedikit data

    =IF(SUMPRODUCT(($A2:$A3=A2)*($B2:$B3=B2))>1,0,1) 
    

Pemeriksaan keunikan ganda

Jika Anda perlu memeriksa keunikan di kolom yang berbeda, Anda tidak dapat mengandalkan dua jenis.

Sebagai gantinya,

  1. Urutkan satu kolom (A)
  2. Tambahkan rumus yang mencakup jumlah rekaman maksimum untuk setiap pengelompokan. Jika ABC mungkin memiliki 50 baris, rumusnya adalah

    =IF(SUMPRODUCT(($A2:$A49=A2)*($B2:$B49=B2))>1,0,1)
    

2
Cara lain yang mungkin kurang intensif prosesor adalah menambahkan kolom C dan C2 =A2&B2. Kemudian tambahkan kolom D dan masukkan D2 =IF(MATCH(C2, C$2:C2, 0) = ROW(C1), 1, 0). Isi keduanya. Meskipun ini masih mencari dari awal seluruh rentang, ia berhenti ketika menemukan yang pertama, dan alih-alih mengalikan nilai dari 50.000 baris bersama-sama, ia hanya harus menemukan nilainya - sehingga performanya akan jauh lebih baik.
ErikE

@ErikE Sharp - Saya juga berpikir teknik Anda berhenti pada penemuan pertama. Tetapi jika Anda memiliki banyak nilai unik di C (contoh: hanya 50 ABC), Anda akan terus memeriksa data dalam jumlah besar. Fitur keren: rumus Anda berfungsi paling baik saat data tidak diurutkan.
workglide

1

Excel 2013 dapat melakukan Hitung berbeda di pivot. Jika tidak ada akses ke 2013, dan jumlah datanya lebih kecil, saya membuat dua salinan data mentah, dan di salinan b, pilih kedua kolom dan hapus duplikat. Kemudian buat poros dan hitung kolom Anda b.


1

Anda dapat menggunakan COUNTIFS untuk beberapa kriteria,

= 1 / COUNTIFS (A: A, A2, B: B, B2) lalu seret ke bawah. Anda dapat memasukkan kriteria sebanyak yang Anda inginkan, tetapi prosesnya cenderung memakan banyak waktu.


1

Langkah 1. Tambahkan kolom

Langkah 2. Gunakan rumus = IF(COUNTIF(C2:$C$2410,C2)>1,0,1)dalam catatan pertama

Langkah 3. Seret ke semua catatan

Langkah 4. Saring '1' di kolom dengan rumus


0

Anda dapat membuat kolom tambahan untuk menyimpan keunikan, maka jumlah yang di tabel pivot Anda.

Maksud saya, sel C1harus selalu begitu 1. Sel C2harus berisi rumus =IF(COUNTIF($A$1:$A1,$A2)*COUNTIF($B$1:$B1,$B2)>0,0,1). Salin rumus ini ke bawah sehingga sel C3akan berisi =IF(COUNTIF($A$1:$A2,$A3)*COUNTIF($B$1:$B2,$B3)>0,0,1)dan seterusnya.

Jika Anda memiliki sel header, Anda akan ingin memindahkan semua ini ke bawah satu baris dan C3rumus Anda seharusnya =IF(COUNTIF($A$2:$A2,$A3)*COUNTIF($B$2:$B2,$B3)>0,0,1).


0

Jika sudah ada data yang diurutkan .. saya sarankan menggunakan rumus berikut

=IF(OR(A2<>A3,B2<>B3),1,0)

Ini lebih cepat karena menggunakan lebih sedikit sel untuk menghitung.


0

Saya biasanya mengurutkan data berdasarkan bidang yang saya butuhkan untuk melakukan penghitungan berbeda kemudian menggunakan IF (A2 = A1,0,1); Anda mendapatkan 1 di baris atas dari setiap grup ID. Sederhana dan tidak membutuhkan waktu lama untuk menghitung pada kumpulan data besar.


0

Anda juga dapat menggunakan untuk kolom pembantu VLOOKUP. Saya menguji dan terlihat sedikit lebih cepat dari COUNTIF.

Jika Anda menggunakan header dan data dimulai dalam sel A2, maka di sel mana pun dalam baris gunakan rumus ini dan salin di semua sel lain di kolom yang sama:

=IFERROR(IF(VLOOKUP(A2;$A$1:A1;1;0)=A2;0;1);1)

-3

Saya menemukan cara yang lebih mudah untuk melakukan ini. Mengacu pada contoh Siddarth Rout, jika saya ingin menghitung nilai unik di kolom A:

  • tambahkan kolom C baru dan isi C2 dengan rumus "= 1 / COUNTIF ($ A: $ A, A2)"
  • seret rumus ke bagian kolom lainnya
  • pivot dengan kolom A sebagai label baris, dan Jumlahkan nilai {kolom C) untuk mendapatkan jumlah nilai unik di kolom A

Logikanya ini tidak mungkin bekerja untuk OP karena tidak melihat kolom B. Bagaimana Anda akan menyesuaikan ini untuk bekerja dengan banyak kolom?
ErikE
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.