สารบัญ
บทช่วยสอนจะอธิบายรูปแบบเวกเตอร์และอาร์เรย์ของฟังก์ชัน Excel LOOKUP และสาธิตการใช้ LOOKUP ใน Excel แบบปกติและไม่สำคัญพร้อมตัวอย่างสูตร
หนึ่งในคำถามที่พบบ่อยที่สุด ที่ผู้ใช้ Excel ทุกคนถามเป็นครั้งคราวคือ: " ฉันจะค้นหาค่าในแผ่นงานหนึ่งและดึงค่าที่ตรงกันไปยังแผ่นงานอื่นได้อย่างไร " แน่นอน สถานการณ์พื้นฐานอาจมีหลายรูปแบบ: คุณอาจกำลังมองหาการจับคู่ที่ใกล้เคียงที่สุดมากกว่าการจับคู่แบบตรงทั้งหมด คุณอาจต้องการค้นหาในแนวตั้งในคอลัมน์หรือแนวนอนในแถว ประเมินเกณฑ์หนึ่งหรือหลายเกณฑ์ ฯลฯ อย่างไรก็ตาม สาระสำคัญก็เหมือนกัน คุณต้องรู้วิธีการค้นหาใน Excel
Microsoft Excel มีวิธีต่างๆ มากมายในการค้นหา ในการเริ่มต้น เรามาเรียนรู้ฟังก์ชันที่ออกแบบมาเพื่อจัดการกับกรณีที่ง่ายที่สุดของการค้นหาในแนวตั้งและแนวนอน อย่างที่คุณเดาได้ง่ายๆ ฉันกำลังพูดถึงฟังก์ชัน LOOKUP
ฟังก์ชัน LOOKUP ของ Excel - ไวยากรณ์และการใช้งาน
ในระดับพื้นฐานที่สุด ฟังก์ชัน LOOKUP ใน Excel ค้นหาค่าในหนึ่งคอลัมน์หรือหนึ่งแถวและส่งกลับค่าที่ตรงกันจากตำแหน่งเดียวกันในคอลัมน์หรือแถวอื่น
การค้นหาใน Excel มีอยู่สองรูปแบบ: เวกเตอร์ และ อาร์เรย์ . มีการอธิบายแต่ละรูปแบบแยกกันด้านล่าง
ฟังก์ชัน Excel LOOKUP - แบบฟอร์มเวกเตอร์
ในบริบทนี้ เวกเตอร์ หมายถึงช่วงหนึ่งคอลัมน์หรือหนึ่งแถวสูตรทำงาน:
=LOOKUP(VLOOKUP(E2, $A$2:$C$7, 3, FALSE), {"c";"d";"t"}, {"Completed";"Development";"Testing"})
ดังที่แสดงในภาพหน้าจอด้านล่าง สูตรดึงสถานะโครงการจากตารางค้นหาและแทนที่คำย่อด้วยคำที่เกี่ยวข้อง:
เคล็ดลับ หากคุณใช้ Excel 2016 เป็นส่วนหนึ่งของการสมัครใช้งาน Office 365 คุณสามารถใช้ฟังก์ชัน SWITCH เพื่อวัตถุประสงค์ที่คล้ายคลึงกันได้
ฉันหวังว่าตัวอย่างเหล่านี้จะช่วยให้เข้าใจถึงวิธีการทำงานของฟังก์ชัน LOOKUP เพื่อให้เข้าใจสูตรได้ดีขึ้น คุณสามารถดาวน์โหลดตัวอย่างการค้นหาของ Excel เหล่านี้ได้ ในบทช่วยสอนถัดไป เราจะพูดถึงวิธีอื่นๆ สองสามวิธีในการค้นหาใน Excel และอธิบายว่าสูตรการค้นหาใดดีที่สุดที่จะใช้ในสถานการณ์ใด ฉันขอขอบคุณที่อ่านและหวังว่าจะได้พบคุณในบล็อกของเราในสัปดาห์หน้า!
ดังนั้น คุณใช้รูปแบบเวกเตอร์ของ LOOKUP เพื่อค้นหาข้อมูลหนึ่งแถวหรือหนึ่งคอลัมน์สำหรับค่าที่ระบุ และดึงค่าจากตำแหน่งเดียวกันในแถวหรือคอลัมน์อื่นไวยากรณ์ของการค้นหาเวกเตอร์คือ ดังนี้:
LOOKUP(lookup_value, lookup_vector, [result_vector])ที่ไหน:
- Lookup_value (จำเป็น) - ค่าที่จะค้นหา อาจเป็นตัวเลข ข้อความ ค่าตรรกะของ TRUE หรือ FALSE หรือการอ้างอิงไปยังเซลล์ที่มีค่าการค้นหา
- Lookup_vector (จำเป็น) - หนึ่งแถวหรือหนึ่งคอลัมน์ ช่วงที่ต้องการค้นหา จะต้องจัดเรียงใน จากน้อยไปหามาก .
- Result_vector (ไม่บังคับ) - ช่วงหนึ่งแถวหรือหนึ่งคอลัมน์ที่คุณต้องการส่งคืนผลลัพธ์ - ค่า ในตำแหน่งเดียวกับค่าการค้นหา Result_vector ต้องเป็น ขนาดเดียวกัน เป็น lookup_range หากละเว้น ผลลัพธ์จะถูกส่งกลับจาก lookup_vector .
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการทำงานของสูตรการค้นหาแบบง่ายสองสูตร
สูตรการค้นหาแนวตั้ง - ค้นหาในหนึ่ง- ช่วงคอลัมน์
สมมติว่าคุณมีรายชื่อผู้ขายในคอลัมน์ D (D2:D5) และผลิตภัณฑ์ที่ขายในคอลัมน์ E (E2:E5) คุณกำลังสร้างแดชบอร์ดที่ผู้ใช้ของคุณจะป้อนชื่อผู้ขายใน B2 และคุณต้องการสูตรที่จะดึงผลิตภัณฑ์ที่เกี่ยวข้องใน B3 สามารถทำงานให้สำเร็จได้อย่างง่ายดายด้วยสูตรนี้:
=LOOKUP(B2,D2:D5,E2:E5)
เพื่อทำความเข้าใจเกี่ยวกับข้อโต้แย้ง โปรดดูภาพหน้าจอนี้:
สูตรการค้นหาแนวนอน - ค้นหาในช่วงหนึ่งแถว
หากแหล่งข้อมูลของคุณมีเค้าโครงแนวนอน เช่น รายการอยู่ในแถวแทนที่จะเป็นคอลัมน์ จากนั้นระบุช่วงหนึ่งแถวในอาร์กิวเมนต์ lookup_vector และ result_vector เช่นนี้:
=LOOKUP(B2,E1:H1,E2:H2)
ในส่วนที่สองของบทช่วยสอนนี้ คุณจะพบตัวอย่างการค้นหาของ Excel อีกสองสามตัวอย่างที่ช่วยแก้ปัญหาที่ซับซ้อนมากขึ้น ในระหว่างนี้ โปรดจำข้อเท็จจริงง่ายๆ ต่อไปนี้ซึ่งจะช่วยให้คุณข้ามข้อผิดพลาดที่อาจเกิดขึ้นได้และป้องกันข้อผิดพลาดทั่วไป
5 สิ่งที่คุณควรทราบเกี่ยวกับรูปแบบเวกเตอร์ของ Excel LOOKUP
- ค่าใน lookup_vector ควรจัดเรียงใน จากน้อยไปมาก เช่น จากน้อยไปมาก หรือจาก A ถึง Z มิฉะนั้น สูตรการค้นหา Excel ของคุณอาจส่งกลับข้อผิดพลาดหรือผลลัพธ์ที่ไม่ถูกต้อง หากคุณต้องการค้นหา ข้อมูลที่ไม่เรียงลำดับ ให้ใช้ INDEX MATCH หรือ OFFSET MATCH อย่างใดอย่างหนึ่ง
- Lookup_vector และ result_vector ต้องเป็น หนึ่งแถว หรือ หนึ่งคอลัมน์ ช่วงที่มีขนาดเท่ากัน
- ฟังก์ชัน LOOKUP ใน Excel ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ จึงไม่แยกความแตกต่าง ข้อความตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก
- Excel LOOKUP ทำงานตาม การจับคู่โดยประมาณ อย่างแม่นยำยิ่งขึ้น สูตรการค้นหาจะค้นหาการจับคู่แบบตรงทั้งหมดก่อน หากไม่สามารถหาค่าที่ต้องการค้นหาได้ ให้ค้นหา ค่าที่เล็กที่สุดถัดไปค่า เช่น ค่าที่ใหญ่ที่สุดใน lookup_vector ที่น้อยกว่าหรือเท่ากับ lookup_value
ตัวอย่างเช่น หากค่าการค้นหาของคุณคือ "5" สูตรจะค้นหาก่อน หากไม่พบ "5" ก็จะค้นหา "4" ถ้าไม่พบ "4" ก็จะค้นหา "3" ไปเรื่อยๆ
- ถ้า lookup_value คือ เล็กกว่า กว่าค่าที่น้อยที่สุดใน lookup_vector Excel LOOKUP จะส่งกลับข้อผิดพลาด #N/A
ฟังก์ชัน Excel LOOKUP - รูปแบบอาร์เรย์
รูปแบบอาร์เรย์ของฟังก์ชัน LOOKUP จะค้นหาค่าที่ระบุใน คอลัมน์หรือแถวแรกของอาร์เรย์ และดึงค่าจากตำแหน่งเดียวกันในคอลัมน์หรือแถวสุดท้ายของอาร์เรย์
การค้นหาอาร์เรย์มีอาร์กิวเมนต์ 2 อาร์กิวเมนต์ ซึ่งจำเป็นต้องมีทั้งสองอาร์กิวเมนต์:
LOOKUP( lookup_value, array)ที่ไหน:
- Lookup_value - ค่าที่จะค้นหาในอาร์เรย์
- อาร์เรย์ - a ช่วงของเซลล์ที่คุณต้องการค้นหาค่าการค้นหา ค่าในคอลัมน์หรือแถวแรกของอาร์เรย์ (ขึ้นอยู่กับว่าคุณใช้ V-lookup หรือ H-lookup) จะต้องเรียงลำดับจากน้อยไปหามาก อักขระตัวพิมพ์ใหญ่และตัวพิมพ์เล็กจะถือว่าเท่ากัน
ตัวอย่างเช่น มีชื่อผู้ขายอยู่ในคอลัมน์แรกของอาร์เรย์ (คอลัมน์ A) และวันที่สั่งซื้อในคอลัมน์สุดท้ายของอาร์เรย์ (คอลัมน์ C) คุณสามารถใช้สูตรต่อไปนี้เพื่อค้นหาชื่อและดึงวันที่ที่ตรงกัน:
=LOOKUP(B2,D2:F5)
หมายเหตุ รูปแบบอาร์เรย์ของฟังก์ชัน Excel LOOKUP ไม่ควรสับสนกับสูตรอาร์เรย์ของ Excel แม้ว่า LOOKUP จะทำงานบนอาร์เรย์ แต่ LOOKUP ก็ยังคงเป็นสูตรปกติ ซึ่งเสร็จสิ้นด้วยวิธีปกติโดยการกดปุ่ม Enter
4 สิ่งที่คุณควรทราบเกี่ยวกับรูปแบบอาร์เรย์ของ Excel LOOKUP
- หาก อาร์เรย์ มี แถวมากกว่าคอลัมน์ หรือจำนวนคอลัมน์และแถวเท่ากัน สูตรการค้นหาจะค้นหาในคอลัมน์แรก (การค้นหาในแนวนอน)
- ถ้า อาร์เรย์ มี คอลัมน์มากกว่าแถว Excel LOOKUP จะค้นหาในแถวแรก (การค้นหาในแนวตั้ง ).
- ถ้าสูตรไม่พบค่าการค้นหา สูตรจะใช้ ค่าที่ใหญ่ที่สุด ในอาร์เรย์ที่น้อยกว่าหรือเท่ากับ lookup_value .
- ถ้า ค่าการค้นหามีค่าน้อยกว่า กว่าค่าที่น้อยที่สุดในคอลัมน์หรือแถวแรกของอาร์เรย์ (ขึ้นอยู่กับขนาดอาร์เรย์) สูตรการค้นหาจะส่งกลับข้อผิดพลาด #N/A<11
หมายเหตุสำคัญ! ฟังก์ชันการทำงานของฟอร์มอาร์เรย์ Excel LOOKUP นั้นมีจำกัด และเราไม่แนะนำให้ใช้ แต่คุณสามารถใช้ฟังก์ชัน VLOOKUP หรือ HLOOKUP ซึ่งเป็นเวอร์ชันที่ปรับปรุงแล้วเพื่อค้นหาในแนวตั้งและแนวนอนตามลำดับ
วิธีใช้ฟังก์ชัน LOOKUP ใน Excel - ตัวอย่างสูตร
แม้ว่าจะมีอยู่ ฟังก์ชันที่มีประสิทธิภาพมากขึ้นเพื่อค้นหาและจับคู่ใน Excel (ซึ่งเป็นหัวข้อของบทช่วยสอนถัดไปของเรา) LOOKUP มีประโยชน์ในหลาย ๆ สถานการณ์ และตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้งานที่ไม่สำคัญสองสามอย่าง โปรดทราบว่าสูตรด้านล่างทั้งหมดใช้รูปแบบเวกเตอร์ของ Excel LOOKUP
ค้นหาค่าในเซลล์ที่ไม่ว่างเซลล์สุดท้ายในคอลัมน์
หากคุณมีคอลัมน์ที่มีการเติมข้อมูลแบบไดนามิก ข้อมูล คุณอาจต้องการเลือกรายการที่เพิ่มล่าสุด เช่น รับเซลล์สุดท้ายที่ไม่ว่างในคอลัมน์ สำหรับสิ่งนี้ ให้ใช้สูตรทั่วไปนี้:
LOOKUP(2, 1/( column ""), column )ในสูตรข้างต้น อาร์กิวเมนต์ทั้งหมดยกเว้น การอ้างอิงคอลัมน์เป็นค่าคงที่ ดังนั้น ในการดึงค่าสุดท้ายในคอลัมน์ใดคอลัมน์หนึ่ง คุณเพียงแค่ระบุการอ้างอิงคอลัมน์ที่เกี่ยวข้อง ตัวอย่างเช่น หากต้องการแยกค่าของเซลล์ที่ไม่ว่างเซลล์สุดท้ายในคอลัมน์ A ให้ใช้สูตรนี้:
=LOOKUP(2, 1/(A:A""), A:A)
หากต้องการรับค่าสุดท้ายจากคอลัมน์อื่น ให้แก้ไขการอ้างอิงคอลัมน์ตามที่แสดง ในภาพหน้าจอด้านล่าง - การอ้างอิงแรกคือคอลัมน์ที่จะตรวจสอบสำหรับเซลล์ว่าง/ไม่ว่าง และการอ้างอิงที่สองคือคอลัมน์ที่จะส่งคืนค่าจาก:
How สูตรนี้ใช้งานได้
ในอาร์กิวเมนต์ lookup_value คุณระบุ 2 หรือจำนวนอื่นๆ ที่มากกว่า 1 (ในอีกสักครู่ คุณจะเข้าใจว่าทำไม)
ใน lookup_vector อาร์กิวเมนต์ คุณใส่นิพจน์นี้: 1/(A:A"")
- ก่อนอื่น คุณดำเนินการทางตรรกะ A:A"" ที่เปรียบเทียบแต่ละเซลล์ในคอลัมน์ A ด้วยสตริงว่างและส่งกลับ TRUE สำหรับเซลล์ว่างและ FALSE สำหรับเซลล์ที่ไม่ว่าง ในตัวอย่างข้างต้น สูตรใน F2 ส่งคืนอาร์เรย์นี้: {TRUE;TRUE;TRUE;TRUE;FALSE...}
- จากนั้น ให้คุณหารเลข 1 ด้วยแต่ละองค์ประกอบของอาร์เรย์ด้านบน ด้วย TRUE เท่ากับ 1 และ FALSE เท่ากับ 0 คุณจะได้อาร์เรย์ใหม่ที่ประกอบด้วย 1 และ #DIV/0! ข้อผิดพลาด (ผลลัพธ์ของการหารด้วย 0) และอาร์เรย์นี้ใช้เป็น lookup_vector ในตัวอย่างนี้ มันคือ {1;1;1;1;#DIV/0!...}
ทีนี้ สูตรส่งคืนค่าสุดท้ายที่ไม่ว่างเปล่าในคอลัมน์ เนื่องจาก lookup_value ไม่ตรงกับองค์ประกอบใด ๆ ของ lookup_vector ? กุญแจสำคัญในการทำความเข้าใจตรรกะคือ Excel LOOKUP จะค้นหาด้วยการจับคู่โดยประมาณ เช่น เมื่อไม่พบค่าการค้นหาที่แน่นอน มันจะจับคู่ค่าที่มากที่สุดถัดไปใน lookup_vector ที่น้อยกว่า lookup_value . ในกรณีของเรา lookup_value คือ 2 และค่าที่ใหญ่ที่สุดใน lookup_vector คือ 1 ดังนั้น LOOKUP จึงตรงกับ 1 สุดท้ายในอาร์เรย์ ซึ่งเป็นเซลล์สุดท้ายที่ไม่ว่างเปล่า!
ในอาร์กิวเมนต์ result_vector คุณอ้างอิงคอลัมน์ที่คุณต้องการส่งกลับค่า และสูตรการค้นหาของคุณจะดึงค่าในตำแหน่งเดียวกับค่าการค้นหา
เคล็ดลับ. หากคุณต้องการรับ หมายเลขของแถว ที่มีค่าสุดท้าย ให้ใช้ฟังก์ชัน ROW เพื่อดึงข้อมูล ตัวอย่างเช่น: =LOOKUP(2,1/(A:A""),ROW(A:A))
ค้นหาค่าในเซลล์สุดท้ายที่ไม่ว่างในแถว
หากแหล่งข้อมูลของคุณวางเรียงกันเป็นแถวกว่าคอลัมน์ คุณจะได้รับค่าของเซลล์สุดท้ายที่ไม่ว่างเปล่าโดยใช้สูตรนี้:
LOOKUP(2, 1/( row ""), row )อันที่จริง สูตรนี้ไม่ได้เป็นอย่างอื่นนอกจากการแก้ไขสูตรก่อนหน้านี้เล็กน้อย โดยมีข้อแตกต่างเพียงอย่างเดียวที่คุณใช้การอ้างอิงแถวแทนการอ้างอิงคอลัมน์
ตัวอย่างเช่น เมื่อต้องการรับค่าของค่าสุดท้าย เซลล์ที่ไม่ว่างในแถวที่ 1 ใช้สูตรนี้:
=LOOKUP(2, 1/(1:1""), 1:1)
ภาพหน้าจอต่อไปนี้แสดงผลลัพธ์:
รับค่า เชื่อมโยงกับรายการสุดท้ายในแถว
ด้วยความคิดสร้างสรรค์เพียงเล็กน้อย สูตรข้างต้นสามารถปรับแต่งได้อย่างง่ายดายสำหรับการแก้ปัญหางานอื่นๆ ที่คล้ายคลึงกัน ตัวอย่างเช่น สามารถใช้เพื่อรับค่าที่เกี่ยวข้องกับอินสแตนซ์สุดท้ายของค่าที่ระบุในแถว อาจฟังดูคลุมเครือเล็กน้อย แต่ตัวอย่างต่อไปนี้จะทำให้เข้าใจได้ง่ายขึ้น
สมมติว่าคุณมีตารางสรุปโดยที่คอลัมน์ A มีชื่อผู้ขาย และคอลัมน์ต่อมามีข้อมูลบางประเภทในแต่ละเดือน ในตัวอย่างนี้ เซลล์ประกอบด้วย "ใช่" หากผู้ขายหนึ่งรายปิดดีลอย่างน้อยหนึ่งรายการในเดือนที่กำหนด เป้าหมายของเราคือการได้รับหนึ่งเดือนที่เกี่ยวข้องกับรายการล่าสุดที่ "ใช่" ในแถว
งานสามารถแก้ไขได้โดยใช้สูตรการค้นหาต่อไปนี้:
=LOOKUP(2, 1/(B2:H2="yes"), $B$1:$H$1)
ตรรกะของสูตรนั้นเหมือนกับที่อธิบายไว้ในตัวอย่างแรก ข้อแตกต่างคือคุณใช้ตัวดำเนินการ "เท่ากับ" ("=") แทน "ไม่เท่ากันเป็น" ("") และดำเนินการกับแถวแทนคอลัมน์
ภาพหน้าจอต่อไปนี้แสดงผลลัพธ์:
ค้นหาทางเลือกแทน IF ที่ซ้อนกัน<18
ในสูตรการค้นหาทั้งหมดที่เราพูดถึงจนถึงตอนนี้ อาร์กิวเมนต์ lookup_vector และ result_vector ถูกแทนด้วยการอ้างอิงช่วง อย่างไรก็ตาม ไวยากรณ์ของฟังก์ชัน Excel LOOKUP อนุญาตให้ จัดหาเวกเตอร์ในรูปแบบของค่าคงที่อาร์เรย์แนวตั้ง ซึ่งช่วยให้คุณสามารถจำลองการทำงานของ IF ที่ซ้อนกันได้ด้วยสูตรที่กะทัดรัดและอ่านง่ายยิ่งขึ้น
สมมติว่าคุณมีรายการตัวย่อใน คอลัมน์ A และคุณต้องการแทนที่ด้วยชื่อเต็ม โดยที่ "C" หมายถึง "เสร็จสมบูรณ์" "D" คือ "การพัฒนา และ "T" คือ "การทดสอบ" งานสามารถทำได้โดยใช้ฟังก์ชัน IF ที่ซ้อนกันต่อไปนี้:
=IF(A2="c", "Completed", IF(A2="d", "Development", IF(A2="t", "Testing", "")))
หรือโดยใช้สูตรการค้นหานี้:
=LOOKUP(A2, {"c";"d";"t"}, {"Completed";"Development";"Testing"})
ตามที่แสดงใน ภาพหน้าจอด้านล่าง ทั้งสองสูตรให้ผลลัพธ์ที่เหมือนกัน:
หมายเหตุ เพื่อให้สูตรการค้นหาใน Excel ทำงานได้อย่างถูกต้อง ค่าใน lookup_array ควรเรียงลำดับจาก A ถึง Z หรือจากน้อยไปมาก
หากคุณกำลังดึงค่าจากตารางการค้นหา คุณสามารถฝังฟังก์ชัน Vlookup ในอาร์กิวเมนต์ lookup_value เพื่อเรียกข้อมูลที่ตรงกัน
สมมติว่าค่าการค้นหาอยู่ในเซลล์ E2 ตารางการค้นหาคือ A2:C7 และคอลัมน์ที่สนใจ ("สถานะ") คือคอลัมน์ที่ 3 ในตารางการค้นหา ดังต่อไปนี้