Bagaimana saya bisa merujuk ke dua kolom berbeda dalam fungsi COUNTIF?


11

Saya akan mencoba yang terbaik untuk menjelaskan. Katakanlah saya punya lembar yang terlihat seperti ini (dalam contoh yang dibuat-buat ini, katakanlah saya mengirim email pemasaran ke berbagai orang, saya tahu umur mereka dan kode pos, dan saya ingin melacak tingkat klik di email-email itu):

        A   |    B        |    C  
  1     Age |    zip code |  click?  
  2     26  |    11111    |  true  
  3     27  |    11112    |  true  
  4     28  |    11111    |  false  
  5     27  |    22222    |  false  
  6     28  |    11112    |  false  
  7     26  |    22222    |  true  

Sekarang saya ingin melacak berbagai statistik. Dalam hal ini, saya ingin melacak laju klik berdasarkan usia dan kode pos. Jadi saya punya tabel seperti ini:

      E         F          G 
 1   Age  |  # sent  | # clicked
 2   26   |
 3   26   |
 4   27   |
 5   28   |

Jadi pada dasarnya di kolom "# terkirim", saya dapat memasukkan (dalam F2, misalnya):

=COUNTIF(A:A, E2)

Dan ini akan menghasilkan 2 di sel F2, karena ada dua kemunculan "26" di kolom A.

Tetapi sekarang bagaimana jika saya ingin tahu berapa banyak yang diklik? Saya ingin mengatakan sesuatu seperti:

=COUNTIF(A:A == E2  AND  C:C == True, for the same row where A:A matched E2)

Saya tahu saya dapat menambahkan kolom D lainnya dengan rumus seperti

=IF(C2, A2, "")

Yang hanya akan tetapi usia dalam kolom D jika kolom C benar. Tetapi saya dapat memiliki banyak kriteria dan sepertinya tidak perlu menambahkan kolom "palsu" untuk setiap kolom kriteria yang saya miliki.

Apakah ada cara untuk melakukan ini? Jika tidak di Google Documents, di Excel?


Catatan: jawaban untuk Google Sheets baru ada di sana .

Jawaban:


11

Gunakan kombinasi operasi ARRAYFORMULA, SUM dan aritmatika

Inilah fungsi untuk menghitung semua klik pada usia 26 tahun:

=ARRAYFORMULA(sum((A:A=26) * (C:C="true")))

Ada 3 bagian untuk operasi ini.

  • The ARRAYFORMULA mengurus perulangan selama rentang tertentu
  • The SUM mengelola menghitung semua hasil yang benar

Pada dasarnya, true sedang dikonversi ke 1 dan false sedang dikonversi ke 0. Logika boolean dilakukan dengan menggunakan operasi aritmatika.

Sebuah DAN operasi menggunakan perkalian:

  • (1 * 1) = 1 - (Benar && Benar) = Benar
  • (1 * 0) = 0 - (Benar && Salah) = Salah
  • (0 * 0) = 0 - (Salah && Salah) = Salah

Sebuah OR operasi menggunakan kombinasi dari * SIGN fungsi dan penambahan:

  • tanda (1 + 1) = 1 - (Benar || Benar) = Benar
  • tanda (1 + 0) = 1 - (Benar || Salah) = Benar
  • tanda (0 + 0) = 0 - (Salah || Salah) = Salah

Catatan: Fungsi tanda diperlukan karena cara penambahan boolean bekerja secara berbeda dari penambahan aritmatika. Pada dasarnya dalam penambahan boolean 1 + 1 = 1, dalam penambahan aritmatika 1 + 1 = 2. Jelas, penambahan aritmatika akan mengacaukan hitungan sehingga Anda perlu menjalankan hasil operasi penambahan melalui fungsi tanda. Fungsi tanda mengembalikan 1 jika nilainya positif, 0 jika nilainya 0, dan -1 jika nilainya negatif.

Katakanlah Anda ingin menghitung klik untuk semua pengguna yang berusia antara 20-25:

=ARRAYFORMULA(sum(sign((A:A=20) + (A:A=21) + (A:A=22) + (A:A=23) + (A:A=24) + (A:A=25)) * (C:C="true")))

TANDA tidak diperlukan di sini kan? tidak ada sel tunggal yang bisa both20 dan 23, misalnya jadi penambahan tidak akan pernah memberi Anda nilai> 1 dalam hal ini. MASUK hanya diperlukan jika kondisinya tidak saling eksklusif. Tidakkah antara 20 dan 25 lebih mudah dilakukan dengan versi ini? =arrayformula(sum((A:A>=20)*(A:A<=25)*(C:C=TRUE)))
barry houdini

Saya mencoba menjelaskan penggunaan umum logika ATAU. Jika tes tidak eksklusif (terkandung dalam kolom yang sama) maka fungsi SIGN akan diperlukan. Dalam hal ini tidak. Dan, ya contoh Anda akan menjadi pendekatan yang lebih baik tetapi tidak menunjukkan penggunaan ATAU. Saya sedang mencoba memikirkan pendekatan sederhana untuk menunjukkan penggunaan ATAU yang cocok dengan pertanyaan OP tapi saya jelas tidak pandai menghasilkan contoh-contoh. Jika Anda memiliki beberapa contoh yang lebih baik, saya mendorong Anda untuk mengedit / meningkatkan jawabannya.
Evan Plaice

Permintaan maaf, Evan, saya salah paham - itu contoh yang bagus.
barry houdini

Anda dapat menghindari = benar, jadi: = ARRAYFORMULA (jumlah ((A: A = 26) * C: C))
tic

1
@tic Saya tidak menggunakan boolean true (yang BENAR di Google Spreadsheets) saya mengacu pada 'true' string yang digunakan op dalam pertanyaannya. Cobalah, saya cukup yakin bahwa jika Anda menguji nilai untuk C: C itu akan selalu mengembalikan TRUE pada string yang tidak kosong. Dalam sel spreadsheet, Google menempel pada aturan Excel di atas JavaScript. Selamat datang di dunia menyenangkan dari abstraksi bocor.
Evan Plaice

10

Sampai sekarang, Google Sheets baru mendukung COUNTIFS, yang dapat langsung menangani pekerjaan yang diperlukan.

=COUNTIFS(A:A, E2, C:C, "true")

Sebutkan semua rentang dan perbandingan untuk dipisahkan dengan koma.


4
Terima kasih telah menghadiahi saya dengan menggulir ke bawah. Ini adalah jawabannya ketika bekerja dengan lembar google baru.
Christiaan Westerbeek

3

Di Excel saya akan menggunakan SUMPRODUCT di Excel 2003 atau COUNTIFS (dengan "S") di Excel 2007 atau yang lebih baru ....... tetapi di Google Docs coba ini

=arrayformula(sum((A:A=E2)*(C:C=TRUE)))


3
=COUNTA( IFERROR( FILTER('Guest List'!$G:$G ; 'Guest List'!$G:$G = "Yes" ; 'Guest List'!$L:$L = "USA" ) ) )

Ini untuk dua kolom - saya menggunakan ini untuk daftar tamu pernikahan saya - dalam hal ini, tabulasi "Ya" untuk mengirim tanggal simpan, dan "AS" untuk lokasi, sehingga saya dapat menghitung ongkos kirim nanti. Mungkin ada formula yang lebih pendek, tetapi ini tampaknya berhasil, jadi saya tidak mengacaukannya!

Selamat berhitung.


1

Di Excel, saya akan lupa rumus, dan menggunakan tabel Pivot.

Anda mungkin perlu menambahkan satu kolom "penghitung", yang dapat digunakan berulang kali sebagai variabel yang Anda jumlah untuk mendapatkan hasil.


0

Anda dapat menambahkan larik yang ingin Anda uji ke {}.

Dalam contoh di bawah ini:

=countif({F2,H2,J2,L2,N2,P2,R2,T2,V2,W2},"TRUE")
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.