VLOOKUP ใช้ได้ดีจนวันที่ต้องค้นจากรหัสแล้วดึงชื่อสินค้าที่อยู่ทางซ้าย — หรือวันที่มีคนแทรกคอลัมน์ในตารางราคา แล้วสูตรทั้งไฟล์ดึงผิดคอลัมน์ไปหมด
INDEX MATCH แก้ทั้งสองปัญหา: ค้นได้ทุกทิศ และไม่พังเมื่อแทรกคอลัมน์ บทความนี้อธิบายทีละชิ้นจนเข้าใจ พร้อม XLOOKUP ทางลัดที่ใช้ได้ใน Google Sheets
เข้าใจทีละชิ้น: MATCH หาแถว INDEX ดึงค่า
| ชิ้น | สูตร | ได้อะไร |
|---|---|---|
| MATCH — อยู่แถวที่เท่าไหร่ | =MATCH("B-102",B2:B5,0) | 2 (อยู่ลำดับที่ 2 ของช่วง) |
| INDEX — ดึงค่าลำดับที่ N | =INDEX(A2:A5,2) | หลอด (ค่าลำดับที่ 2 ของคอลัมน์ A) |
| รวมกัน | =INDEX(A2:A5,MATCH("B-102",B2:B5,0)) | หลอด |
ตัว 0 ท้าย MATCH คือ "ต้องตรงทุกตัวอักษร" — ใส่ทุกครั้ง ถ้าลืม MATCH จะหาค่าใกล้เคียงแทน และได้คำตอบผิดโดยไม่มี error
ตัวอย่าง: ค้นจากรหัส ดึงชื่อที่อยู่ซ้าย และค้นสองทาง

ภาพจากไฟล์ Google Sheets จริง · เปิดไฟล์ตัวอย่างนี้ (ดูอย่างเดียว — ไฟล์ → ทำสำเนา เพื่อลองแก้)
ดูเป็นตาราง (ก๊อปตัวเลขได้)
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | สินค้า | รหัส | ราคา | คงเหลือ | รหัสที่หา | B-102 | |
| 2 | แก้วกาแฟ | A-101 | 25 | 120 | ชื่อสินค้า | หลอด | |
| 3 | หลอด | B-102 | 2 | 500 | ราคา | 2 | |
| 4 | ฝาแก้ว | B-103 | 3 | 80 | XLOOKUP แบบเดียวกัน | หลอด | |
| 5 | ถุงหิ้ว | C-201 | 1 | 300 | ข้อมูลที่ต้องการ | คงเหลือ | |
| 6 | ผล (ค้นสองทาง) | 500 |
สูตรในช่องสีฟ้า (ช่วงเช่น C2:C4 = พิมพ์ที่ช่องแรกแล้วลากลง):
- G2
=INDEX(A2:A5,MATCH(G1,B2:B5,0)) - G3
=INDEX(C2:C5,MATCH(G1,B2:B5,0)) - G4
=XLOOKUP(G1,B2:B5,A2:A5) - G6
=INDEX(C2:D5,MATCH(G1,B2:B5,0),MATCH(G5,C1:D1,0))
VLOOKUP ค้นจากคอลัมน์รหัส (B) แล้วดึงชื่อสินค้า (A) ที่อยู่ซ้ายมือไม่ได้ INDEX MATCH ทำได้ เพราะแยก "หาแถว" (MATCH) ออกจาก "ดึงค่า" (INDEX) · แถว 6 MATCH ตัวที่สองหาคอลัมน์จากชื่อหัวตาราง เปลี่ยน G5 เป็น ราคา ผลจะเปลี่ยนตาม
ทำไมใช้ INDEX MATCH แทน VLOOKUP
| เรื่อง | VLOOKUP | INDEX MATCH |
|---|---|---|
| ค่าที่ต้องการอยู่ซ้ายของคอลัมน์ที่ค้น | ทำไม่ได้ | ทำได้ |
| แทรก/ลบคอลัมน์ในตาราง | เลขคอลัมน์ (เช่น 3) ไม่ขยับตาม ดึงผิดคอลัมน์ | อ้างคอลัมน์โดยตรง ขยับตามเอง |
| ค้นทั้งแถวและคอลัมน์ | ต้องเขียนเลขคอลัมน์เอง | MATCH ตัวที่สองหาคอลัมน์จากหัวตาราง |
| ความยากตอนเริ่ม | ง่ายกว่า | ยาวกว่า ต้องเข้าใจสองฟังก์ชัน |
ทางลัด: Google Sheets มี XLOOKUP ที่ทำได้เหมือน INDEX MATCH ในสูตรเดียว =XLOOKUP(สิ่งที่หา, คอลัมน์ที่ค้น, คอลัมน์ที่ดึง, "ไม่พบ")ตัวที่สี่คือข้อความเมื่อหาไม่เจอ ไม่ต้องครอบ IFERROR — ใช้ INDEX MATCH เมื่อต้องส่งไฟล์ให้คนที่ใช้ Excel รุ่นเก่า
ค้นหลายเงื่อนไข (เช่น สินค้า + สาขา)
- 1
ทำคอลัมน์ช่วยที่รวมเงื่อนไข
ในตารางข้อมูล เพิ่มคอลัมน์=A2&"|"&B2ได้ เช่น หลอด|สยาม - 2
MATCH หาค่าที่รวมแล้ว
=INDEX(D2:D100,MATCH(G1&"|"&G2,E2:E100,0))เมื่อ G1 = สินค้า G2 = สาขา E = คอลัมน์ช่วย - 3
หรือใช้ FILTER ถ้ามีได้หลายผล
=FILTER(D2:D100,A2:A100=G1,B2:B100=G2)คืนทุกแถวที่ตรงทั้งสองเงื่อนไข
ข้อผิดพลาดที่เจอบ่อย
ได้ #N/A
ได้ค่าผิดแถว แต่ไม่มี error
ลากสูตรลงแล้วช่วงเลื่อน
ได้ #REF!
อยากได้ระบบสต็อกที่ค้นรหัสแล้วตัดยอดและเตือนของใกล้หมดเข้า LINE?
คำถามที่ถามบ่อย
INDEX MATCH คืออะไร?
การใช้สองฟังก์ชันคู่กัน MATCH หาว่าค่าที่ต้องการอยู่แถวที่เท่าไหร่ INDEX ดึงค่าจากแถวนั้นในคอลัมน์ที่ต้องการ ค้นได้ทุกทิศทางต่างจาก VLOOKUP
INDEX MATCH ดีกว่า VLOOKUP ยังไง?
ดึงค่าที่อยู่ซ้ายของคอลัมน์ค้นหาได้ และไม่พังเมื่อแทรกหรือลบคอลัมน์ เพราะอ้างคอลัมน์โดยตรงแทนการนับเลขคอลัมน์
ทำไม INDEX MATCH ได้ #N/A?
หาค่าไม่เจอ ตรวจการสะกด ช่องว่างเกิน และชนิดข้อมูล (ตัวเลขกับข้อความ) ให้ตรงกันทั้งสองฝั่ง
XLOOKUP ใน Google Sheets มีไหม?
มี ใช้ =XLOOKUP(สิ่งที่หา,คอลัมน์ที่ค้น,คอลัมน์ที่ดึง,"ไม่พบ") ทำงานแบบ INDEX MATCH ในสูตรเดียว
ค้นสองทาง (แถวและคอลัมน์) ทำยังไง?
ใช้ =INDEX(ตาราง,MATCH(ค่าแถว,คอลัมน์ค้น,0),MATCH(ชื่อหัวตาราง,แถวหัวตาราง,0)) เปลี่ยนชื่อหัวตารางแล้วผลเปลี่ยนตาม
