Excel COUNTIF Lambat

0

Saya mengalami masalah aneh di excel yang belum pernah saya alami sebelumnya. Saya memiliki lembar excel yang saya coba tarik beberapa catatan spesifik, yang mengharuskan saya tahu duplikat. Saya menggunakan COUNTIF untuk memfilter ke duplikat saya lalu menarik berdasarkan filter lain; Namun, COUNTIF tampaknya akan menutup telepon. Saya telah menguraikan proses saya di bawah ini.

  1. Buat kolom dengan = COUNTIF (A: A, A2)
  2. Salin rumus ke bawah kolom
  3. Simpan lembar kerja (Hang / memakan waktu untuk selesai) atau Salin kolom dan rekatkan nilai (Hang / perlu waktu untuk selesai

Saya telah melakukan ini di Excel 2010 dan 2013 dengan hasil yang sama pada dua PC yang berbeda. Lembar kerja hanya memiliki 172000 baris di dalamnya. Rumus dieksekusi baik untuk mendapatkan nilai, tetapi hang ketika saya mencoba untuk menyimpan atau menyalin dan menempelkan nilai kolom. Tanpa kolom itu, lembar kerja berperilaku normal. Saya belum pernah mengalami ini sebelumnya.

Terima kasih sebelumnya!

steventnorris
sumber
Cobalah dua hal ........ gunakan COUNTIFS () daripada COUNTIF () ......... batasi rentang menggunakan $ A $ 1: $ A $ 172000
Siswa Gary
@ Gary'sStudent Masalah yang sama dengan keduanya. Jika saya menunggu selama berabad-abad untuk akhirnya menyelamatkan, tampaknya berperilaku normal setelahnya, atau apakah setelah saya mendapatkannya menghemat satu kali.
Apakah Anda memiliki filter yang diterapkan pada tabel?
Excellll
Anda bisa menerapkan pemformatan bersyarat sehingga duplikat memiliki warna isian yang berbeda lalu gunakan "Saring menurut warna."
P Fitz
1
@steventnorris Gulir ke bawah ke baris 172k dan lihat bilah geser bilah gulir di sebelah kanan. Apakah itu di bagian bawah bilah? Jika tidak, sorot baris 172001, tahan CTRL + shift dan tekan panah bawah untuk menyorot semua baris di bawah. Klik kanan pada nomor baris di sebelah kiri, hapus baris, lalu simpan buku kerja untuk mereset bilah gulir. Ini dapat menyembuhkan perlambatan Anda. Ingatlah bahwa itu tidak akan berlaku sampai Anda menyimpan buku kerja.
P Fitz

Jawaban:

2

Mengapa tidak menerapkan filter saja alih-alih menggunakan countif()?

  1. Pilih data Anda, buka Data - Sort & Filter - Advanceduntuk menempatkan filter lanjutan.
  2. Saring daftar, di tempat
  3. Pilih seluruh tabel sebagai List range
  4. Pilih kolom A sebagai Criteria range
  5. Centang kotak di sebelah Catatan unik saja
Raystafarian
sumber
Saya sebenarnya ingin catatan yang tidak unik, jadi duplikat. Apakah ada cara untuk memfilter duplikat menggunakan metode ini?
steventnorris
@steventnorris Anda bisa menggunakan pemformatan bersyarat untuk mengidentifikasi mereka?
Raystafarian
Itu disarankan di atas, dan pemformatan bersyarat berfungsi dengan baik, tetapi ketika saya mencoba memfilter menurut warna, masalah yang sama terjadi.
steventnorris
Karena targetnya adalah .. "mengharuskan saya mengetahui duplikat" .. @steventnorris dapat menggunakan metode ini, untuk mendapatkan sel yang tidak unik .. || Metode: (setelah @ .Raystafarian langkah 5) .. tambahkan satu kolom tambahan, dan ketik '1' di dalamnya .., lalu masukkan filter pada kolom tambahan itu .. Filter untuk sel-sel non-'1 '.. selesai .. itu = sel non-unik Anda. / (^_^) [p / s: Saya tidak bermaksud menimpa posting jawaban dan menambahkan ini sebagai langkah 6 .. Saya lebih suka membiarkan pemilik jawaban melakukannya.]
p._phidot_
2

Coba yang berikut ini:

  1. Matikan perhitungan otomatis. (Tabulasi pita rumus, grup Perhitungan, drop-down Opsi Perhitungan, Manual)
  2. Matikan "Hitung ulang buku kerja sebelum menyimpan" (Opsi, tab Rumus, bagian Opsi Penghitungan)
  3. Ubah referensi ke kolom A ke referensi ke rentang bernama dinamis .
Will Ediger
sumber
1
Saya sedikit menentang metode ini karena pengguna akhir yang saya tidak yakin akan ingat untuk me-refresh secara manual ke sheet akan menggunakan ini pada akhirnya. Tentunya CountIf harus berfungsi pada lembaran tanpa menggantung, kan? Entah bagaimana?
steventnorris
Sebagai pengguna, Anda mungkin akan memperhatikan bahwa sebagian besar pengguna yang berurusan dengan buku kerja besar dengan perhitungan dalam jumlah besar akan menjadi gila jika mereka tidak mengaktifkan Penghitungan Manual. Produktivitas Anda meningkat karena jika tidak, Anda harus menunggu waktu perhitungan saat Anda bekerja. Saat Anda membutuhkan data yang disegarkan, Anda seringkali hanya menyegarkan lembar kerja (atau bahkan rentang) yang Anda minati. Ini adalah kejahatan yang perlu, dan Anda dengan cepat terbiasa dengannya.
Will Ediger
Apapun, sudahkah Anda mencoba metode ini untuk melihat apakah itu yang menyebabkan masalah?
Will Ediger
Ini menyelesaikan masalah saat menyimpan dan memfilter, tetapi saat menghitung, saya masih memiliki pesan "Menghitung: (4 proses) di bagian bawah yang membutuhkan waktu lama untuk menyelesaikannya. Dengan menggunakan "Hitung Sekarang", saya setidaknya bisa mengklik dan menghentikan perhitungan, tapi itu tidak terlalu baik.
steventnorris
Sudahkah Anda mencoba mengubah referensi rentang ke rentang bernama dinamis, atau hanya menguji jika itu membantu, rentang bernama biasa?
Will Ediger
0

Coba gunakan rumus array, seharusnya berkinerja lebih baik.

  1. Jika rumus Anda adalah kolom b, maka: pilih B2: B172000
  2. Mengetik =COUNTIF($A$1:$A$172000,A1:A172000)
  3. Tekan Cntrl-Shift-Enter
Madball73
sumber
Saya mencoba metode ini, dan saya memiliki masalah yang sama.
steventnorris
@ Raystafarian Ini tidak menyelesaikan masalah. Saya memiliki masalah SAMA dengan metode ini.
steventnorris
@steventnorris ha Saya salah membaca, permintaan maaf.
Raystafarian
0

Anda bisa melakukan ini dengan cara yang berbeda untuk menyelesaikan masalah Anda - Gunakan Tabel Pivot pada Kolom A. Saya berasumsi Anda memiliki header di A1 dan data meluas dari A2 ke beberapa baris variabel di luar A2.

  1. Sorot kolom A. Klik Sisipkan, Tabel Pivot.
  2. Pilih lokasi tujuan Pivot Table Anda, lalu klik OK.
  3. Di kotak dialog "Bidang PivotTable" (tidak yakin persis seperti apa tampilan ini pada tahun 2010; saya menggunakan 2013), seret apa pun tajuk Anda untuk kolom A ke bawah ke kotak "Baris" dan kotak "Nilai".
  4. Dalam contoh saya di Excel, Nilai untuk header secara default akan dihitung. Jika bukan karena Anda, klik kiri baris di kotak header "jumlah / jumlah / rata-rata / ?? ... dari Header", dan kemudian klik "Pengaturan Nilai Bidang". Lalu di bawah "Ringkas bidang nilai menurut", Anda pilih Hitung.

Anda dapat mengaktifkan penghitungan otomatis. PivotTables harus di-refresh secara eksplisit. Cobalah dan lihat apakah itu berhasil untuk Anda.

Will Ediger
sumber
Saya tidak bisa mendapatkan hitungan baris ini, itu adalah menyalin baris ini ke lembar lain untuk digunakan secara terpisah. Saya tahu pivot dapat menghitung, menjumlahkan, dll., Tetapi saya belum beruntung mendapatkan baris yang sebenarnya. Apakah itu mungkin?
steventnorris
0

Opsi lain yang mungkin Anda lihat adalah menyalin data (hanya nilai) ke buku kerja baru dan melihat apakah masalah kinerja masih ada. Mungkin buku kerja rusak entah bagaimana.

Will Ediger
sumber
0
  1. Tabel pivot dengan kolom tempat Anda mencoba duplikat.

  2. Hitung berapa kali nilai Anda muncul.

  3. Salin apa saja dengan hitungan> 1 ke lembar lain

  4. Gunakan lembar ini sebagai tabel VLOOKUP, untuk menandai duplikat pada lembar asli Anda.

  5. Salin / tempel nilai dari VLOOKUP Anda (karena rumusnya volatile, dan Anda tidak ingin Excel menghitung ulang setiap kali perubahan dilakukan).

  6. Filter untuk duplikat.

Operasi Vlookup masih membutuhkan sedikit waktu, tetapi secara signifikan lebih cepat daripada COUNTIF.

contramonk
sumber
0

Saya menemukan rumus countif saya = COUNTIF ($ E $ 2: $ E $ 111111, E2) berjalan sangat lambat sehingga telah melakukan yang berikut,

Putar data Anda

Masukkan baris ID yang ingin Anda hitung Masukkan nilai jumlah ID yang ingin Anda hitung

Kembali ke data Anda, masukkan kolom dan buat indeks dan cocokkan yang cocok dengan kolom id di data Anda ke kolom pivot Anda dengan id di baris.

Kemudian indeks kembali hitungan kolom id pada pivot asli Anda akan menjadi: = COUNTIF ($ E $ 2: $ E $ 111111, E2)

menggunakan indeks dan kecocokan

= INDEX (Pivot! B: B, MATCH (Data! E: E, Pivot! A: A, 0))

Ini mempercepat perhitungan secara besar-besaran

Terima kasih

Rhys Williams
sumber
0

Saya bertemu dengan masalah yang sama dan mencari solusi untuk utas ini. Formula saya di kolom B adalah sebagai berikut: = COUNTIF ($ A1 $: A, A2)

sehingga penghitungan untuk setiap baris baru yang disalin akan selalu dimulai dari awal dataset.

Countif membutuhkan waktu (di lembar saya + 100k baris), tetapi berhasil. Excel saya macet jika saya ingin menyalin sebagai nilai , dan saya memiliki komputer yang cepat dengan 16gig RAM.

Lalu saya baru saja menemukan solusi paling sederhana! Tambahkan kolom di sebelah kolom rumus (mis. Kolom C), dan buat rumus sederhana yang mereferensikan kolom B, seperti = B1 * 1 atau = VALUE (B1) dan salin semuanya ke bawah. Setelah itu, Anda tinggal pilih kolom rumus sederhana ini, dan Salin sebagai nilai .

Setelah nilai dalam Kolom C disalin, Anda dapat menghapus kolom rumus berat asli ATAU membuat lembar Excel baru dengan hanya nilai yang ditempelkan padanya.

Jaanis Petke
sumber
0

Saya telah mengalami masalah yang sama dengan rumus CountIf di tabel dengan beberapa ribu baris. Dengan mengikuti langkah-langkah ini, saya dapat memotong waktu menjadi kurang dari setengah (dari ~ 96 detik menjadi kurang dari 40 detik):

  1. Membuat kolom tambahan dengan penomoran berurutan (hanya untuk memungkinkan penyortiran kembali).
  2. Mengurutkan kolom yang digunakan dalam CountIf seperlunya (naik atau turun)
  3. Menghitung CountIf
  4. Mengkonversi hasil CountIf dari rumus ke nilai.
  5. Mengurutkan kembali data menggunakan kolom penomoran berurutan (disebutkan pada langkah 1).

Dalam kasus saya, saya menggunakan CountIf untuk mendapatkan nomor baris nilai dalam daftar (seperti SQL's row_number ()). Daftar yang saya gunakan untuk melakukan langkah-langkah memiliki nilai duplikat.

LarryU
sumber