ใน Excel ฉันจะตรวจสอบได้อย่างไรว่าเซลล์อยู่ในรายการค่า (ช่วงของเซลล์)


88

ฉันมีช่วง (A3: A10) ที่มีชื่อและฉันต้องการตรวจสอบว่าเนื้อหาของเซลล์อื่น (D1) ตรงกับชื่อในรายการของฉันหรือไม่

ฉันตั้งชื่อช่วง A3: A10 'some_names' และฉันต้องการสูตร excel ที่จะให้จริง / เท็จหรือ 1/0 ขึ้นอยู่กับเนื้อหา

คำตอบ:


92

= COUNTIF (some_names, D1)

ควรทำงาน (1 ถ้าชื่อเป็นปัจจุบัน - มากกว่าถ้ามีมากกว่าหนึ่งอินสแตนซ์)


ฉันจะแก้ไขสูตรเพื่อให้ทำงานได้อย่างไรในกรณีที่ some_namesคอลัมน์มี 2 และแทนที่จะเป็น D1 ฉันมี D1: E1
user1993

66

คำตอบที่ฉันต้องการ (แก้ไขจากเอียน) คือ:

=COUNTIF(some_names,D1)>0

ซึ่งจะส่งกลับค่า TRUE หากพบ D1 ในช่วง some_name อย่างน้อยหนึ่งครั้งหรือเป็น FALSE

(COUNTIF ส่งคืนจำนวนเต็มของเกณฑ์ที่พบในช่วง)


26

ฉันรู้ว่า OP ระบุไว้โดยเฉพาะว่ารายการมาจากช่วงของเซลล์ แต่คนอื่น ๆ อาจสะดุดกับสิ่งนี้ในขณะที่มองหาช่วงของค่าเฉพาะ

นอกจากนี้คุณยังสามารถค้นหาค่าเฉพาะได้มากกว่าช่วงโดยใช้MATCHฟังก์ชั่น นี่จะให้หมายเลขที่ตรงกับการแข่งขันนี้ (ในกรณีนี้คือจุดที่สองดังนั้น 2) มันจะส่งกลับ # N / A หากไม่มีการแข่งขัน

=MATCH(4,{2,4,6,8},0)

คุณสามารถแทนที่เซลล์แรกด้วยเซลล์ได้ ใส่ 4 ในเซลล์ A1 แล้วพิมพ์ลงในเซลล์อื่น

=MATCH(A1,{2,4,6,8},0)

1
ดีมาก. อย่าลืมที่จะเพิ่ม "คำพูด" ถ้าค่าของคุณไม่ใช่ตัวเลข (เอาสองสามฉันพยายามที่จะเรียงลำดับ)
dav

1
น่าเศร้าที่คุณไม่สามารถใช้สิ่งนี้ในการจัดรูปแบบตามเงื่อนไข :(
StarWeaver

แน่นอนว่าคุณสามารถ ด้วย Excel 2007 และใหม่กว่าคุณสามารถใช้ฟังก์ชัน IFERROR = IFERROR (MATCH (A1, {2,4,6,8}, 0), 0) จากนั้นคุณสามารถทำการจัดรูปแบบตามเงื่อนไขของคุณว่าเซลล์นั้น = 0 หรือ> 0 แล้วแต่ว่าคุณต้องการ
RPh_Coder

6
=OR(4={2,4,6,8})
Slai

คำตอบนี้ชัดเจนว่าโซลูชันส่งคืน # N / A ซึ่งเป็นจริง แต่ดูเหมือนว่าไม่ช่วยเหลือ: คุณไม่สามารถใช้ # N / A ในประโยค if ดังนั้นคุณจึงไม่สามารถพูดว่า IF (MATCH (4 {2,3}, 0), "yay", "boo") ... คำตอบคือ # N / A ไม่ใช่ "boo"
GreenAsJade

18

หากคุณต้องการเปลี่ยน countif ให้เป็นเอาต์พุตอื่น (เช่นบูลีน) คุณสามารถทำได้เช่นกัน:

= IF (COUNTIF (some_names, D1)> 0, TRUE, FALSE)

สนุก!


3
ความช่วยเหลือ TRUE และ FALSE ระบุว่าต้องเปลี่ยน
อะไรบ้าง


4

มีเคล็ดลับเล็ก ๆ น้อย ๆ ที่ส่งคืน Boolean ในช่วงของกรณีที่some_namesสามารถระบุได้อย่างชัดเจนใน"purple","red","blue","green","orange":

=OR("Red"={"purple","red","blue","green","orange"})

หมายเหตุนี่ไม่ใช่สูตรอาร์เรย์


จริงๆแล้วมันเป็นสูตรอาร์เรย์ สิ่งที่ไม่ได้เป็นอาร์เรย์ป้อนสูตร ;-)
robinCTS

2

คุณสามารถทำรัง--([range]=[cell])ในIF, SUMIFSหรือCOUNTIFSโต้แย้ง ตัวอย่างเช่นIF(--($N$2:$N$23=D2),"in the list!","not in the list"). ฉันเชื่อว่านี่อาจใช้หน่วยความจำได้อย่างมีประสิทธิภาพ

อีกวิธีหนึ่งคุณสามารถISERRORล้อมรอบ a VLOOKUPทั้งหมดล้อมรอบIFคำสั่ง IF( ISERROR ( VLOOKUP() ) , "not in the list" , "in the list!" )ชอบ


0

เวอร์ชันของสูตรอาร์เรย์ (ป้อนด้วย Ctrl + Shift + Enter):

=OR(A3:A10=D1)

วิธีนี้ใช้ได้ผล ฉันคิดว่ามันเป็น downvote เพราะ downvoter ไม่ทราบวิธีการใส่สูตรอาร์เรย์ ... มันควรดูเหมือน {= หรือ (R34: R36 = T34)} หลังจากป้อนแล้วถ้าคุณป้อนมันอย่างถูกต้อง
GreenAsJade

-1

ในสถานการณ์เช่นนี้ฉันเพียงต้องการได้รับการแจ้งเตือนถึงข้อผิดพลาดที่เป็นไปได้ดังนั้นฉันจะแก้ไขสถานการณ์ด้วยวิธีนี้ ...

=if(countif(some_names,D1)>0,"","MISSING")

แล้วผมคัดลอกสูตรนี้จากไปE1 E100หากค่าในDคอลัมน์ไม่ได้อยู่ในรายการฉันจะได้รับข้อความ MISSING แต่ถ้าค่านั้นมีอยู่ฉันจะได้รับเซลล์ว่าง นั่นทำให้ค่าที่หายไปนั้นโดดเด่นกว่ามาก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.