ฉันจะอ้างถึงคอลัมน์ที่ต่างกันสองคอลัมน์ในฟังก์ชัน COUNTIF ได้อย่างไร


11

ฉันจะพยายามอธิบายให้ดีที่สุด สมมติว่าฉันมีแผ่นงานที่มีลักษณะเช่นนี้ (ในตัวอย่างที่วางแผนไว้นี้สมมติว่าฉันส่งอีเมลการตลาดไปยังผู้คนต่าง ๆ ฉันรู้อายุและรหัสไปรษณีย์ของพวกเขาและฉันต้องการติดตามอัตราการคลิกในอีเมลเหล่านั้น):

        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  

ตอนนี้ฉันต้องการติดตามสถิติต่างๆ ในกรณีนี้ฉันต้องการติดตามอัตราการคลิกตามอายุและรหัสไปรษณีย์ ดังนั้นฉันจึงได้โต๊ะแบบนี้:

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

ดังนั้นโดยทั่วไปในคอลัมน์ "# ส่ง" ฉันสามารถใส่ (ใน F2 ตัวอย่าง):

=COUNTIF(A:A, E2)

และนี่จะส่งผลเป็น 2 ในเซลล์ F2 เนื่องจากมีเหตุการณ์ "26" สองรายการในคอลัมน์ A

แต่ตอนนี้ถ้าฉันต้องการทราบจำนวนคลิก? ฉันอยากจะพูดอะไรบางอย่างเช่น:

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

ฉันรู้ว่าฉันสามารถเพิ่มคอลัมน์ D อีกสูตรหนึ่งได้

=IF(C2, A2, "")

ซึ่งจะมี แต่อายุในคอลัมน์ D ถ้าคอลัมน์ C เป็นจริง แต่ฉันสามารถมีเกณฑ์ได้หลายอย่างและดูเหมือนว่าฉันไม่ควรเพิ่มคอลัมน์ "ปลอม" อีกคอลัมน์สำหรับแต่ละเกณฑ์ที่ฉันมี

มีวิธีทำเช่นนี้หรือไม่? ถ้าไม่อยู่ใน Google เอกสารใน Excel?


หมายเหตุ: คำตอบสำหรับใหม่ Google ชีคือลงไปที่นั่น

คำตอบ:


11

ใช้การรวมกันของการดำเนินการ ARRAYFORMULA, SUM และเลขคณิต

นี่คือฟังก์ชั่นเพื่อนับจำนวนคลิกทั้งหมดโดยอายุ 26 ปี:

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

การดำเนินการนี้มี 3 ส่วน

  • ARRAYFORMULAดูแลวนลูปในช่วงที่ระบุ
  • SUMจัดการนับทั้งหมดของผลการค้นหาความจริง

โดยพื้นฐานแล้ว True กำลังถูกแปลงเป็น 1 และ false กำลังถูกแปลงเป็น 0 ตรรกะแบบบูลเสร็จสิ้นโดยใช้การดำเนินการทางคณิตศาสตร์

การดำเนินการANDใช้การคูณ:

  • (1 * 1) = 1 - (True && True) = True
  • (1 * 0) = 0 - (จริง && เท็จ) = เท็จ
  • (0 * 0) = 0 - (เท็จ && เท็จ) = เท็จ

การดำเนินการORใช้การรวมกันของฟังก์ชั่น* SIGNและการเพิ่ม:

  • เครื่องหมาย (1 + 1) = 1 - (จริง || จริง) = จริง
  • เครื่องหมาย (1 + 0) = 1 - (จริง || เท็จ) = จริง
  • sign (0 + 0) = 0 - (False || False) = False

หมายเหตุ: จำเป็นต้องใช้ฟังก์ชั่นเครื่องหมายเนื่องจากการเพิ่มบูลีนทำงานแตกต่างจากการบวกเลขคณิต โดยทั่วไปในการเพิ่มบูลีน 1 + 1 = 1 ในการบวกเลข 1 + 1 = 2 เห็นได้ชัดว่าการเพิ่มเลขคณิตจะทำให้จำนวนการนับยุ่งเหยิงดังนั้นคุณต้องเรียกใช้ผลลัพธ์ของการดำเนินการบวกผ่านฟังก์ชันเครื่องหมาย ฟังก์ชัน sign ส่งคืน 1 ถ้าค่าเป็นบวก, 0 ถ้าค่าเป็น 0 และ -1 ถ้าค่าเป็นลบ

ให้บอกว่าคุณต้องการนับจำนวนคลิกสำหรับผู้ใช้ทุกคนที่มีอายุระหว่าง 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")))

เข้าสู่ระบบไม่จำเป็นต้องใช้ที่นี่มันคืออะไร? bothยกตัวอย่างเช่นไม่มีเซลล์เดียวที่สามารถเป็น20 และ 23 ได้ดังนั้นการเพิ่มจะไม่ทำให้คุณมีค่า> 1 ในกรณีนี้ จำเป็นต้องลงชื่อเท่านั้นหากเงื่อนไขไม่ได้เกิดร่วมกัน นอกจากนี้จะไม่สามารถทำได้ระหว่าง 20 และ 25 กับรุ่นนี้ได้ง่ายขึ้นหรือไม่ =arrayformula(sum((A:A>=20)*(A:A<=25)*(C:C=TRUE)))
barry houdini

ฉันพยายามอธิบายการใช้งานทั่วไปของตรรกะหรือ หากการทดสอบนั้นไม่ได้มีเอกสิทธิ์ (มีอยู่ในคอลัมน์เดียวกัน) ดังนั้นฟังก์ชั่น SIGN จำเป็น ในกรณีนี้มันไม่ใช่ และใช่ตัวอย่างของคุณจะเป็นวิธีที่ดีกว่า แต่ไม่แสดงให้เห็นถึงการใช้ OR ฉันพยายามคิดวิธีง่าย ๆ เพื่อแสดงให้เห็นถึงการใช้ OR ที่สอดคล้องกับคำถามของ OP แต่ฉันเห็นได้ชัดว่าไม่ได้เก่งเรื่องการวางข้อมือ หากคุณมีตัวอย่างที่ดีกว่าฉันขอแนะนำให้คุณแก้ไข / ปรับปรุงคำตอบ
Evan Plaice

ขอโทษ, อีวาน, ฉันเข้าใจผิด - นั่นเป็นตัวอย่างที่ยอดเยี่ยม
แบร์รี่ฮูดินี่

คุณสามารถหลีกเลี่ยง = จริงดังนั้น: = ARRAYFORMULA (ผลรวม ((A: A = 26) * C: C))
tic

1
@tic ฉันไม่ได้ใช้บูลีนจริง (ซึ่งก็คือ TRUE ใน Google Spreadsheets) ฉันหมายถึง 'จริง' สตริงที่ op ใช้ในคำถามของเขา ลองดูฉันค่อนข้างแน่ใจว่าถ้าคุณทดสอบค่าสำหรับ C: C มันจะคืนค่า TRUE เสมอบนสตริงที่ไม่ว่างเปล่า ในเซลล์สเปรดชีต Google ยึดติดกับกฎ Excel เหนือ JavaScript ยินดีต้อนรับสู่โลกแห่งความสนุกของ abstractions ที่รั่วไหล
Evan Plaice

10

ณ ตอนนี้ Google ชีตใหม่รองรับ COUNTIFS ซึ่งสามารถจัดการงานที่ต้องการได้โดยตรง

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

แสดงรายการช่วงทั้งหมดและการเปรียบเทียบเพื่อแยกด้วยเครื่องหมายจุลภาค


4
ขอบคุณที่ให้รางวัลฉันเลื่อนลงมาตลอด นี่คือคำตอบเมื่อทำงานกับแผ่นงาน google ใหม่
Christiaan Westerbeek


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

นี่เป็นสองคอลัมน์ - ฉันใช้สิ่งนี้สำหรับรายชื่อแขกงานแต่งงานของฉัน - ในกรณีนี้การทำเป็นตาราง "ใช่" เมื่อส่งการบันทึกวันที่และ "สหรัฐอเมริกา" สำหรับที่ตั้งเพื่อให้ฉันสามารถคำนวณไปรษณีย์ในภายหลัง อาจมีสูตรที่สั้นกว่านี้ แต่ดูเหมือนว่าจะใช้ได้ดังนั้นฉันจึงไม่ยุ่งกับมัน!

มีความสุขมาก


1

ใน Excel ฉันจะลืมสูตรและใช้ตาราง Pivot

คุณอาจต้องเพิ่มหนึ่งคอลัมน์ "ตัวนับ" ซึ่งสามารถใช้ซ้ำแล้วซ้ำอีกเป็นตัวแปรที่คุณรวมไว้เพื่อรับผลลัพธ์


0

คุณสามารถเพิ่มอาร์เรย์ที่คุณต้องการทดสอบเป็น {}

ในตัวอย่างด้านล่าง:

=countif({F2,H2,J2,L2,N2,P2,R2,T2,V2,W2},"TRUE")
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.