Two-way lookup คือการค้นหาค่าจากตารางโดยใช้ทั้งหัวแถวและหัวคอลัมน์พร้อมกัน เช่น ตารางราคาที่แถวเป็นชื่อสินค้า คอลัมน์เป็นไซซ์ แล้วเราอยากได้ราคาของ “เสื้อ” ไซซ์ “L” VLOOKUP ธรรมดาทำไม่ได้เพราะมันล็อกคอลัมน์ผลลัพธ์ตายตัว บทความนี้รวม 3 วิธีทำ two-way lookup ตั้งแต่แบบที่ใช้ได้ทุกเวอร์ชันจนถึงแบบสั้นที่สุดใน Microsoft 365
วิธีที่ 1: INDEX + MATCH + MATCH (ใช้ได้ทุกเวอร์ชัน)
=INDEX(B2:D4, MATCH(G2,A2:A4,0), MATCH(H1,B1:D1,0))| A | B | C | D | G | H | ||
|---|---|---|---|---|---|---|---|
| 1 | สินค้า \ ไซซ์ | S | M | L | ค้นหา | L | |
| 2 | เสื้อยืด | 120 | 140 | 160 | เสื้อยืด | 160 | |
| 3 | เสื้อโปโล | 250 | 280 | 320 | |||
| 4 | เสื้อเชิ้ต | 390 | 420 | 460 |
MATCH ตัวแรกหาว่า “เสื้อยืด” อยู่แถวที่เท่าไร (ได้ 1) MATCH ตัวที่สองหาว่า “L” อยู่คอลัมน์ที่เท่าไร (ได้ 3) แล้ว INDEX ดึงค่าที่จุดตัดของแถว 1 คอลัมน์ 3 ในช่วง B2:D4 ออกมา = 160 นี่คือวิธีมาตรฐานที่ยืดหยุ่นที่สุด
วิธีที่ 2: XLOOKUP ซ้อน XLOOKUP (Microsoft 365)
=XLOOKUP(G2, A2:A4, XLOOKUP(H1, B1:D1, B2:D4))| A | B | C | D | G | H | ||
|---|---|---|---|---|---|---|---|
| 1 | สินค้า | S | M | L | เสื้อโปโล | M | |
| 2 | เสื้อยืด | 120 | 140 | 160 | ผล | ||
| 3 | เสื้อโปโล | 250 | 280 | 320 | 280 | ||
XLOOKUP ตัวในเลือก “คอลัมน์” ที่ตรงกับไซซ์ M ออกมาเป็นทั้งคอลัมน์ก่อน แล้ว XLOOKUP ตัวนอกเลือก “แถว” ที่ตรงกับเสื้อโปโลจากคอลัมน์นั้น อ่านง่ายและไม่ต้องนับตำแหน่ง ดู XLOOKUP
วิธีที่ 3: SUMPRODUCT (เวอร์ชันเก่า ไม่ต้องกด Ctrl+Shift+Enter)
=SUMPRODUCT((A2:A4=G2)*(B1:D1=H1)*B2:D4)| A | B | C | D | G | H | ||
|---|---|---|---|---|---|---|---|
| 1 | สินค้า | S | M | L | เสื้อเชิ้ต | S | |
| 2 | เสื้อยืด | 120 | 140 | 160 | 390 | ||
SUMPRODUCT สร้างตาราง TRUE/FALSE สองชุด (แถวที่ตรง กับ คอลัมน์ที่ตรง) คูณกับตารางค่า เหลือแค่ช่องเดียวที่ตรงทั้งคู่ แล้วรวมยอด ใช้ได้เฉพาะเมื่อค่าในตารางเป็นตัวเลข
ข้อควรรู้
- หัวแถวและหัวคอลัมน์ต้องไม่ซ้ำ — ถ้ามีชื่อซ้ำ MATCH จะเจอตัวแรกเสมอ
- ใส่ 0 ใน MATCH เพื่อหาแบบตรงเป๊ะ — ถ้าลืมใส่ จะกลายเป็นการค้นแบบใกล้เคียงและได้ผลผิด
- กันพิมพ์คีย์ผิด — ทำหัวค้นหา (G2, H1) เป็น Dropdown จะเลือกได้เฉพาะค่าที่มีจริง
- อยากดึงทั้งแถวหรือทั้งคอลัมน์ — ใส่ 0 แทนตำแหน่ง เช่น
INDEX(B2:D4, MATCH(G2,A2:A4,0), 0)ได้ราคาทุกไซซ์ของสินค้านั้น