INDEX MATCH MATCH ใน Excel สำหรับการค้นหาแบบสองมิติ

  • แบ่งปันสิ่งนี้
Michael Brown

บทช่วยสอนแสดงสูตรต่างๆ สองสามสูตรเพื่อทำการค้นหาแบบสองมิติใน Excel เพียงแค่ดูตัวเลือกอื่นๆ แล้วเลือกรายการโปรดของคุณ :)

เมื่อค้นหาบางอย่างในสเปรดชีต Excel ส่วนใหญ่คุณจะค้นหาในแนวตั้งในคอลัมน์หรือในแนวนอนในแถว แต่บางครั้งคุณต้องมองข้ามทั้งแถวและคอลัมน์ กล่าวอีกนัยหนึ่ง คุณต้องการค้นหาค่าที่จุดตัดของแถวและคอลัมน์ที่ต้องการ สิ่งนี้เรียกว่า การค้นหาเมทริกซ์ (หรือที่เรียกว่า 2 มิติ หรือ การค้นหา 2 ทาง ) และบทช่วยสอนนี้จะแสดงวิธีการดำเนินการใน 4 วิธีที่แตกต่างกัน<3

สูตร Excel INDEX MATCH MATCH

วิธีที่ได้รับความนิยมมากที่สุดในการค้นหาแบบสองทางใน Excel คือการใช้ INDEX MATCH MATCH นี่เป็นรูปแบบหนึ่งของสูตรการจับคู่ INDEX แบบคลาสสิก ซึ่งคุณเพิ่มฟังก์ชัน MATCH อีกหนึ่งฟังก์ชันเพื่อรับทั้งแถวและหมายเลขคอลัมน์:

INDEX ( data_array , MATCH ( vlookup_value , lookup_column_range , 0), MATCH ( hlookup value , lookup_row_range , 0))

ตามตัวอย่าง ลองสร้างสูตรเพื่อดึงประชากร ของสัตว์ชนิดใดชนิดหนึ่งในปีนั้นๆ จากตารางด้านล่าง สำหรับการเริ่มต้น เรากำหนดอาร์กิวเมนต์ทั้งหมด:

  • Data_array - B2:E4 (เซลล์ข้อมูล ไม่รวมส่วนหัวของแถวและคอลัมน์)
  • Vlookup_value - H1 (สัตว์เป้าหมาย)
  • Lookup_column_range - A2:A4 (ส่วนหัวของแถว: ชื่อสัตว์) -A3:A4
  • Hlookup_value - H2 (ปีเป้าหมาย)
  • Lookup_row_range - B1:E1 (ส่วนหัวของคอลัมน์: ปี)
  • <7

    นำอาร์กิวเมนต์ทั้งหมดมารวมกันแล้วคุณจะได้สูตรนี้สำหรับการค้นหาแบบสองทาง:

    =INDEX(B2:E4, MATCH(H1, A2:A4, 0), MATCH(H2, B1:E1, 0))

    วิธีการทำงานของสูตรนี้

    แม้ว่าจะดูเล็กน้อย ซับซ้อนตั้งแต่แรกเห็น ตรรกะของสูตรนั้นตรงไปตรงมาและเข้าใจง่ายจริงๆ ฟังก์ชัน INDEX ดึงค่าจากอาร์เรย์ข้อมูลตามหมายเลขแถวและคอลัมน์ และฟังก์ชัน MATCH สองตัวจะระบุค่าเหล่านี้:

    INDEX(B2:E4, row_num, column_num)

    ในที่นี้ เราใช้ประโยชน์จากความสามารถของ MATCH(lookup_value, lookup_array, [match_type]) เพื่อส่งคืน ตำแหน่งสัมพัทธ์ ของ lookup_value ใน lookup_array .

    ดังนั้น เพื่อให้ได้หมายเลขแถว เราจึงค้นหา สำหรับสัตว์ที่น่าสนใจ (H1) ในส่วนหัวของแถว (A2:A4):

    MATCH(H1, A2:A4, 0)

    เพื่อให้ได้หมายเลขคอลัมน์ เราจะค้นหาปีเป้าหมาย (H2) ในส่วนหัวของคอลัมน์ (B1:E1):

    MATCH(H2, B1:E1, 0)

    ในทั้งสองกรณี เรามองหาการจับคู่แบบตรงทั้งหมดโดยตั้งค่าอาร์กิวเมนต์ที่ 3 เป็น 0

    ในตัวอย่างนี้ ค่า MATCH แรกจะส่งกลับ 2 เนื่องจากค่า vlookup ของเรา (หมีขั้วโลก) อยู่ใน A3 ซึ่งเป็นเซลล์ที่ 2 ใน A2:A4 MATCH ที่สองส่งกลับ 3 เนื่องจากพบค่า hlookup (2000) ใน D1 ซึ่งเป็นเซลล์ที่ 3 ใน B1:E1

    เมื่อพิจารณาจากข้างต้น สูตรจึงลดลงเป็น:

    INDEX(B2:E4, 2, 3)

    และส่งกลับค่าที่จุดตัดของแถวที่ 2 และคอลัมน์ที่ 3 ในอาร์เรย์ข้อมูล B2:E4 ซึ่งก็คือค่าในเซลล์ D3

    สูตร VLOOKUP และ MATCH สำหรับการค้นหาแบบ 2 ทาง

    อีกวิธีในการค้นหาแบบสองมิติใน Excel คือการใช้ฟังก์ชัน VLOOKUP และ MATCH ร่วมกัน:

    VLOOKUP( vlookup_value , table_array , MATCH( hlookup_value , lookup_row_range , 0), FALSE)

    สำหรับตารางตัวอย่างของเรา สูตรใช้รูปร่างต่อไปนี้:

    =VLOOKUP(H1, A2:E4, MATCH(H2, A1:E1, 0), FALSE)

    ที่ไหน:

    • Table_array - A2:E4 (เซลล์ข้อมูลรวมถึงส่วนหัวของแถว)
    • Vlookup_value - H1 (สัตว์เป้าหมาย)
    • Hlookup_value - H2 (ปีเป้าหมาย)
    • Lookup_row_range - A1:E1 (ส่วนหัวของคอลัมน์: ปี)

    วิธีการทำงานของสูตรนี้

    แกนหลักของสูตรคือฟังก์ชัน VLOOKUP ที่กำหนดค่าสำหรับการจับคู่แบบตรงทั้งหมด (อาร์กิวเมนต์สุดท้าย ตั้งเป็น FALSE) ซึ่งค้นหาค่าการค้นหา (H1) ในคอลัมน์แรกของอาร์เรย์ตาราง (A2:E4) และส่งกลับค่าจากคอลัมน์อื่นในแถวเดียวกัน ในการพิจารณาว่าจะส่งคืนค่าจากคอลัมน์ใด ให้ใช้ฟังก์ชัน MATCH ที่กำหนดค่าสำหรับการจับคู่แบบตรงทั้งหมด (อาร์กิวเมนต์สุดท้ายที่ตั้งค่าเป็น 0):

    MATCH(H2, A1:E1, 0)

    MATCH ค้นหาค่าใน H2 ข้ามส่วนหัวของคอลัมน์ (A1:E1) และส่งกลับตำแหน่งสัมพัทธ์ของเซลล์ที่พบ ในกรณีของเรา ปีเป้าหมาย (2010) พบได้ใน E1 ซึ่งเป็นลำดับที่ 5 ในอาร์เรย์การค้นหา ดังนั้น หมายเลข 5 ไปที่อาร์กิวเมนต์ col_index_num ของ VLOOKUP:

    VLOOKUP(H1, A2:E4, 5, FALSE)

    VLOOKUP นำมาจากที่นั่น ค้นหาตรงกับค่าการค้นหาใน A2 และส่งกลับค่าจากคอลัมน์ที่ 5 ในแถวเดียวกัน ซึ่งก็คือเซลล์ E2

    หมายเหตุสำคัญ! เพื่อให้สูตรทำงานได้อย่างถูกต้อง table_array (A2:E4) ของ VLOOKUP และ lookup_array ของ MATCH (A1:E1) จะต้องมีจำนวนคอลัมน์เท่ากัน มิฉะนั้น จำนวนที่ส่งผ่านโดย MATCH ถึง col_index_num จะไม่ถูกต้อง (จะไม่สอดคล้องกับตำแหน่งของคอลัมน์ใน table_array )

    ฟังก์ชัน XLOOKUP เพื่อค้นหาในแถวและคอลัมน์

    เมื่อเร็ว ๆ นี้ Microsoft ได้เปิดตัวอีกหนึ่งฟังก์ชันใน Excel ซึ่งมีวัตถุประสงค์เพื่อแทนที่ฟังก์ชันการค้นหาที่มีอยู่ทั้งหมด เช่น VLOOKUP, HLOOKUP และ INDEX MATCH เหนือสิ่งอื่นใด XLOOKUP สามารถดูจุดตัดของแถวและคอลัมน์ที่ต้องการได้:

    XLOOKUP( vlookup_value , vlookup_column_range , XLOOKUP( hlookup_value , hlookup_row_range , data_array ))

    สำหรับชุดข้อมูลตัวอย่างของเรา สูตรจะเป็นดังนี้:

    =XLOOKUP(H1, A2:A4, XLOOKUP(H2, B1:E1, B2:E4))

    หมายเหตุ ปัจจุบัน XLOOKUP เป็นฟังก์ชันเบต้า ซึ่งพร้อมใช้งานสำหรับสมาชิก Office 365 ที่เป็นส่วนหนึ่งของโปรแกรม Office Insiders เท่านั้น

    วิธีการทำงานของสูตรนี้

    สูตรนี้ใช้ความสามารถของ XLOOKUP เพื่อส่งคืน ทั้งแถวหรือทั้งคอลัมน์ ฟังก์ชันภายในค้นหาปีเป้าหมายในแถวส่วนหัวและส่งกลับค่าทั้งหมดสำหรับปีนั้น (ในตัวอย่างนี้คือปี 1980) ค่าเหล่านั้นไปที่อาร์กิวเมนต์ return_array ของส่วนนอกXLOOKUP:

    XLOOKUP(H1, A2:A4, {22000;25000;700}))

    ฟังก์ชัน XLOOKUP ภายนอกค้นหาสัตว์เป้าหมายในส่วนหัวของคอลัมน์และส่งกลับค่าในตำแหน่งเดียวกันจาก return_array

    สูตร SUMPRODUCT สำหรับสอง -way lookup

    ฟังก์ชัน SUMPRODUCT เปรียบเสมือนมีดสวิสใน Excel มันสามารถทำอะไรได้หลายอย่างนอกเหนือจากวัตถุประสงค์ที่กำหนดไว้ โดยเฉพาะอย่างยิ่งเมื่อต้องประเมินเกณฑ์หลายข้อ

    หากต้องการค้นหาสองอย่าง เกณฑ์ ในแถวและคอลัมน์ ใช้สูตรทั่วไปนี้:

    SUMPRODUCT( vlookup_column_range = vlookup_value ) * ( hlookup_row_range = hlookup_value ), data_array )

    หากต้องการค้นหาแบบ 2 ทางในชุดข้อมูลของเรา สูตรจะเป็นดังนี้:

    =SUMPRODUCT((A2:A4=H1) * (B1:E1=H2), B2:E4)

    ไวยากรณ์ด้านล่างจะใช้ได้เช่นกัน:

    =SUMPRODUCT((A2:A4=H1) * (B1:E1=H2) * B2:E4)

    วิธีการทำงานของสูตรนี้

    ที่หัวใจของสูตร เราเปรียบเทียบค่าการค้นหาสองค่ากับส่วนหัวของแถวและคอลัมน์ (สัตว์เป้าหมายใน H1 กับสัตว์ทั้งหมด ชื่อใน A2:A4 และปีเป้าหมายในครึ่งหลังเทียบกับปีทั้งหมดใน B1:E1):

    (A2:A4=H1) * (B1:E1=H2)

    ความละเอียดนี้ ults ใน 2 อาร์เรย์ของค่า TRUE และ FALSE โดยที่ TRUE แทนค่าที่ตรงกัน:

    {FALSE;FALSE;TRUE} * {FALSE,TRUE,FALSE,FALSE}

    การดำเนินการคูณจะบังคับให้ค่า TRUE และ FALSE เป็น 1 และ 0 และสร้างอาร์เรย์สองมิติเป็น 4 คอลัมน์และ 3 แถว (แถวคั่นด้วยเครื่องหมายอัฒภาคและแต่ละคอลัมน์ของข้อมูลด้วยเครื่องหมายจุลภาค):

    {0,0,0,0;0,0,0,0;0,1,0,0}

    ฟังก์ชัน SUMPRODUCT จะคูณองค์ประกอบของอาร์เรย์ด้านบนด้วยรายการของB2:E4 ในตำแหน่งเดียวกัน:

    {0,0,0,0;0,0,0,0;0,1,0,0} * {22000,13800,8500,3500;25000,23000,22000,20000;700,2000,2300,2500}

    และเนื่องจากการคูณด้วยศูนย์จะให้ศูนย์ เฉพาะรายการที่สอดคล้องกับ 1 ในอาร์เรย์แรกเท่านั้นที่จะอยู่รอด:

    SUMPRODUCT({0,0,0,0;0,0,0,0;0,2000,0,0})

    สุดท้าย SUMPRODUCT จะเพิ่มองค์ประกอบของอาร์เรย์ที่เป็นผลลัพธ์และส่งคืนค่า 2000

    หมายเหตุ ถ้าตารางของคุณมีแถวหรือ/และส่วนหัวของคอลัมน์ที่มีชื่อเดียวกันมากกว่าหนึ่งแถว อาร์เรย์สุดท้ายจะมีตัวเลขมากกว่าหนึ่งตัวนอกเหนือจากศูนย์ และตัวเลขทั้งหมดจะถูกรวมเข้าด้วยกัน ดังนั้น คุณจะได้รับผลรวมของค่าที่ตรงกับทั้งสองเกณฑ์ นี่คือสิ่งที่ทำให้สูตร SUMPRODUCT แตกต่างจาก INDEX MATCH MATCH และ VLOOKUP ซึ่งจะส่งคืนค่าที่ตรงกันที่พบครั้งแรก

    การค้นหาเมทริกซ์ด้วยช่วงที่มีชื่อ (จุดตัดที่ชัดเจน)

    อีกหนึ่งวิธีง่ายๆ ที่น่าอัศจรรย์ การค้นหาเมทริกซ์ใน Excel คือการใช้ช่วงที่มีชื่อ มีวิธีการดังนี้:

    ส่วนที่ 1: ตั้งชื่อคอลัมน์และแถว

    วิธีที่เร็วที่สุดในการตั้งชื่อแต่ละแถวและแต่ละคอลัมน์ในตารางของคุณคือ:

    1. เลือกทั้งตาราง (กรณีของเราคือ A1:E4)
    2. ในแท็บ สูตร ในกลุ่ม ชื่อที่กำหนด ให้คลิก สร้าง จากส่วนที่เลือก หรือกดปุ่มลัด Ctrl + Shift + F3
    3. ในกล่องโต้ตอบ สร้างชื่อจากส่วนที่เลือก เลือก แถวบนสุด และ ซ้าย คอลัมน์ แล้วคลิก ตกลง

    สิ่งนี้จะสร้างชื่อโดยอัตโนมัติตามส่วนหัวของแถวและคอลัมน์ อย่างไรก็ตาม มีข้อแม้บางประการ:

    • หากคอลัมน์ของคุณ และ/หรือส่วนหัวของแถวเป็นตัวเลขหรือมีอักขระเฉพาะที่ไม่อนุญาตในชื่อ Excel ชื่อสำหรับคอลัมน์และแถวดังกล่าวจะไม่ถูกสร้างขึ้น หากต้องการดูรายชื่อที่สร้างขึ้น ให้เปิดตัวจัดการชื่อ ( Ctrl + F3 ) หากบางชื่อหายไป ให้กำหนดด้วยตนเองตามที่อธิบายไว้ในวิธีตั้งชื่อช่วงใน Excel
    • หากส่วนหัวของแถวหรือคอลัมน์บางรายการมีช่องว่าง ช่องว่างจะถูกแทนที่ด้วยเครื่องหมายขีดล่าง เช่น Polar_bear .

    สำหรับตารางตัวอย่างของเรา Excel จะสร้างเฉพาะชื่อแถวโดยอัตโนมัติ ต้องสร้างชื่อคอลัมน์ด้วยตนเองเนื่องจากส่วนหัวของคอลัมน์เป็นตัวเลข เพื่อแก้ปัญหานี้ คุณสามารถนำหน้าตัวเลขด้วยเครื่องหมายขีดล่าง เช่น _1990

    ด้วยเหตุนี้ เราจึงมีช่วงที่มีชื่อดังต่อไปนี้:

    ส่วนที่ 2 : สร้างสูตรการค้นหาเมทริกซ์

    หากต้องการดึงค่าที่จุดตัดของแถวและคอลัมน์ที่กำหนด ให้พิมพ์หนึ่งในสูตรทั่วไปต่อไปนี้ในเซลล์ว่าง:

    = row_name column_name

    หรือในทางกลับกัน:

    = column_name row_name

    ตัวอย่างเช่น เพื่อให้ได้จำนวนประชากรของวาฬสีน้ำเงินในปี 1990 สูตรง่ายๆ เช่น:

    =Blue_whale _1990

    หากมีคนต้องการคำแนะนำโดยละเอียด ขั้นตอนต่อไปนี้จะนำคุณเข้าสู่กระบวนการ:

    1. ในเซลล์ ที่คุณต้องการให้ผลลัพธ์ปรากฏ ให้พิมพ์เครื่องหมายความเท่าเทียม (=)
    2. เริ่มพิมพ์ชื่อแถวเป้าหมาย เช่น Blue_whale หลังจากคุณพิมพ์อักขระสองสามตัว Excel จะแสดงชื่อที่มีอยู่ทั้งหมดที่ตรงกับที่คุณป้อน ดับเบิลคลิกที่ชื่อที่ต้องการเพื่อป้อนลงในสูตรของคุณ:
    3. หลังชื่อแถว ให้พิมพ์ ช่องว่าง ซึ่งทำหน้าที่เป็น ตัวดำเนินการทางแยก ใน กรณีนี้
    4. ป้อนชื่อคอลัมน์เป้าหมาย ( _1990 ในกรณีของเรา)
    5. ทันทีที่ป้อนทั้งชื่อแถวและคอลัมน์ Excel จะเน้นแถวและคอลัมน์ที่เกี่ยวข้องในตารางของคุณ และคุณกด Enter เพื่อกรอกสูตร:

    การค้นหาเมทริกซ์ของคุณเสร็จสิ้น และภาพหน้าจอด้านล่างแสดงผลลัพธ์:

    นั่นคือวิธีการค้นหาในแถวและคอลัมน์ใน Excel ฉันขอขอบคุณสำหรับการอ่านและหวังว่าจะได้พบคุณในบล็อกของเราในสัปดาห์หน้า!

    ดาวน์โหลดได้

    สมุดงานตัวอย่างการค้นหา 2 มิติ

Michael Brown เป็นผู้ที่ชื่นชอบเทคโนโลยีโดยเฉพาะและมีความหลงใหลในการทำให้กระบวนการที่ซับซ้อนง่ายขึ้นโดยใช้เครื่องมือซอฟต์แวร์ ด้วยประสบการณ์กว่าทศวรรษในอุตสาหกรรมเทคโนโลยี เขาได้ฝึกฝนทักษะของเขาใน Microsoft Excel และ Outlook รวมถึง Google ชีตและเอกสาร บล็อกของ Michael ทุ่มเทให้กับการแบ่งปันความรู้และความเชี่ยวชาญของเขากับผู้อื่น โดยให้คำแนะนำและแบบฝึกหัดที่ทำตามได้ง่ายเพื่อปรับปรุงผลิตภาพและประสิทธิภาพ ไม่ว่าคุณจะเป็นมืออาชีพที่ช่ำชองหรือมือใหม่ บล็อกของ Michael นำเสนอข้อมูลเชิงลึกอันมีค่าและคำแนะนำที่เป็นประโยชน์สำหรับการใช้ประโยชน์สูงสุดจากเครื่องมือซอฟต์แวร์ที่จำเป็นเหล่านี้