ตรวจสอบว่ามีค่าเซลล์อยู่ในคอลัมน์หรือไม่จากนั้นรับค่าของเซลล์ถัดไป


90

หลังจากการตรวจสอบถ้าค่าในเซลล์ที่มีอยู่ในคอลัมน์ฉันต้องได้รับค่าของเซลล์ที่อยู่ติดกับเซลล์ที่ตรงกัน ยกตัวอย่างเช่นผมตรวจสอบว่าค่าในcell A1ที่มีอยู่ในcolumn Bและสมมติว่ามันตรงแล้วฉันต้องการค่าในB5cell C5

เพื่อแก้ปัญหาครึ่งแรกฉันทำสิ่งนี้ ...

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", "Match")

... และได้ผล จากนั้นด้วยคำตอบก่อนหน้านี้เกี่ยวกับ SOฉันจึงได้รับหมายเลขแถวของเซลล์ที่ตรงกัน:

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", "Match on Row " & MATCH(A1,B:B, 0))

ตามธรรมชาติเพื่อให้ได้ค่าของเซลล์ถัดไปฉันพยายาม ...

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", C&MATCH(A1,B:B, 0))

... และไม่ได้ผล

ฉันขาดอะไรไป? ฉันจะต่อท้ายหมายเลขคอลัมน์กับหมายเลขแถวที่ส่งคืนเพื่อให้ได้ผลลัพธ์ที่ต้องการได้อย่างไร

คำตอบ:


99

ใช้ฟังก์ชันอื่นเช่น VLOOKUP:

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", VLOOKUP(A1,B:C,2,FALSE))

1
ขอบคุณ! ได้ผลเช่นกัน! และฉันคิดว่ามันจะดีกว่าที่จะใช้VLOOKUP(A1, B:C, 2, FALSE)แทนการใช้ช่วงคงที่ (เพื่อรองรับอาร์เรย์การค้นหาที่เพิ่มขึ้น)?
SNag

1
ใช่เพิ่งใช้ช่วงคงที่นี้เป็นการทดสอบ แก้ไขในคำตอบของฉัน
CustomX

คุณไม่ต้องการIFERRORที่นี่ มันใช้งานได้ดีถ้าไม่มีมันเพราะ VLOOKUP จะทำงานก็ต่อเมื่อมีการจับคู่
SNag

อ๊ะ! ดูเหมือนว่าฉันจะทดสอบในคอลัมน์ที่ไม่ถูกต้อง: P แน่นอนโดยไม่มี IFERROR มันก็ทำงานได้ดีเช่นกัน: P
CustomX

3
เก่ากว่าเก่า แต่ฉันแค่อยากจะบอกว่าฉันใช้มันมาหลายปีแล้วและมันทำให้ฉันรู้สึกแย่มากที่คุณไม่เคยได้รับคำตอบที่ดีที่สุด ฉันชอบที่มันทำให้ตารางปรับขนาดได้สำหรับการเปรียบเทียบหลายคอลัมน์
DuffDuff

37

หลังจากคำตอบของ t.thielemansฉันก็ทำงานอย่างนั้น

=VLOOKUP(A1, B:C, 2, FALSE) 

ใช้งานได้ดีและทำในสิ่งที่ฉันต้องการยกเว้นว่าจะส่งคืน#N/Aสำหรับสิ่งที่ไม่ตรงกัน ดังนั้นจึงเหมาะสำหรับกรณีที่ทราบว่ามีค่าอยู่ในคอลัมน์การค้นหาอย่างแน่นอน

แก้ไข (ขึ้นอยู่กับความคิดเห็นของ t.thielemans):

เพื่อหลีกเลี่ยง#N/Aสำหรับสิ่งที่ไม่ตรงกันให้ทำ:

=IFERROR(VLOOKUP(A1, B:C, 2, FALSE), "No Match")

3
IFERROR(VLOOKUP(A1, B:C, 2, FALSE),0)ใช้นี้แทน ฉันยังเพิ่มสิ่งนี้ในคำตอบของฉัน 0 เป็นค่าใดก็ได้ที่คุณต้องการ :) (ใช้สิ่งนี้ในรหัสจะนำไปสู่ ​​No Match หากไม่พบรายการที่ตรงกัน)
CustomX

7

แล้วเรื่องนี้ล่ะ?

=IF(ISERROR(MATCH(A1,B:B, 0)), "No Match", INDIRECT(ADDRESS(MATCH(A1,B:B, 0), 3)))

"3" ต่อท้ายหมายถึงคอลัมน์ C


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