---
title: INDEX – ดึงค่าจากตำแหน่งที่ระบุใน Range หรือ Array
url: https://www.thepexcel.com/functions/excel/lookup-and-reference/index/
type: function-explainer
program: Excel
syntax: "=INDEX(array, row_num, [column_num])"
date: 2025-11-30
updated: 2025-12-18
scores:
  popularity: 9
  difficulty: 5
  usefulness: 10
---

# INDEX – ดึงค่าจากตำแหน่งที่ระบุใน Range หรือ Array

> ดึงค่าจากตำแหน่งที่ระบุใน Range หรือ Array

## คำอธิบาย

INDEX คืนค่าหรือ reference ของเซลล์จากตำแหน่งที่ระบุใน range หรือ array โดยอ้างอิงจากหมายเลขแถวและคอลัมน์ที่เราระบุ มักถูกใช้ร่วมกับ MATCH เพื่อสร้าง INDEX-MATCH pattern ที่ยืดหยุ่นกว่า VLOOKUP เยอะ เพราะสามารถดึงข้อมูลจากทิศทางไหนก็ได้ และไม่พังเมื่อมีการแทรกหรือลบคอลัมน์

## Syntax

```excel
=INDEX(array, row_num, [column_num])
```

**Variant**

```excel
=INDEX(array, row_num)
```

Array form สำหรับ range แถวเดียวหรือคอลัมน์เดียว ไม่ต้องระบุ column_num

**Variant**

```excel
=INDEX(array, row_num, column_num)
```

Array form แบบเต็ม ระบุทั้งแถวและคอลัมน์สำหรับ array สองมิติ

**Variant**

```excel
=INDEX(reference, row_num, [column_num], [area_num])
```

Reference form สำหรับดึงข้อมูลจากหลาย range โดยใช้ area_num เลือก range

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| array | Yes | Range/Array |  | ช่วงข้อมูล (range) หรือ array constant ที่ต้องการดึงค่า สำหรับ array form |
| reference | Yes | Reference |  | การอ้างอิงถึงหนึ่งหรือหลาย range สำหรับ reference form ถ้าเป็นหลาย range ต้องใส่วงเล็บครอบ เช่น (A1:C5, E1:G5) |
| row_num | Yes | Number |  | หมายเลขแถวใน array หรือ reference ที่ต้องการดึงค่า (นับจาก 1) ใส่ 0 เพื่อ return ทั้งคอลัมน์ |
| column_num | No | Number | 1 | หมายเลขคอลัมน์ใน array หรือ reference ที่ต้องการดึงค่า (นับจาก 1) ใส่ 0 เพื่อ return ทั้งแถว ถ้า array เป็นคอลัมน์เดียวไม่ต้องระบุ |
| area_num | No | Number | 1 | สำหรับ reference form ระบุว่าจะใช้ range ไหนถ้ามีหลาย range (1 = range แรก, 2 = range ที่สอง) ถ้ามีหลาย range ต้องระบุ |

## เคสการใช้งาน

### สร้างสูตรค้นหาแบบไดนามิกทดแทน VLOOKUP

ใช้ INDEX-MATCH เพื่อสร้างสูตรค้นหาที่ยืดหยุ่นกว่า VLOOKUP โดยสามารถค้นหาจากคอลัมน์ซ้ายไปขวาได้ ไม่พังเมื่อมีการแทรกหรือลบคอลัมน์ และไม่ต้องจำ column_index_num ที่อาจเปลี่ยนแปลงได้

_เหมาะกับ:_ dynamic-lookup

### ค้นหาข้อมูลจากตารางสองมิติ (Matrix Lookup)

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

_เหมาะกับ:_ matrix-lookup

### สร้าง Dynamic Range สำหรับสูตรอื่น

ใช้ INDEX ร่วมกับ COUNTA หรือ MATCH เพื่อสร้าง range ที่ขยายหรือหดตามข้อมูลจริง ทำให้สูตรทำงานอัตโนมัติเมื่อมีการเพิ่มหรือลดข้อมูล

_เหมาะกับ:_ dynamic-range

### ดึงข้อมูลทั้งแถวหรือคอลัมน์มาประมวลผล

ใช้ INDEX กับ row_num=0 หรือ column_num=0 เพื่อ return ข้อมูลทั้งแถว/คอลัมน์ แล้วนำไปใช้กับฟังก์ชันอื่น เช่น SUM, AVERAGE, MAX สำหรับการคำนวณแบบไดนามิก

_เหมาะกับ:_ aggregate-calculation

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: Foundation - ดึงค่าจาก Array คอลัมน์เดียว

```excel
=INDEX({"Apple"; "Banana"; "Cherry"; "Durian"; "Elderberry"}, 3)
```

**ผลลัพธ์:** `Cherry`

ดึงค่าจากตำแหน่งที่ 3 ใน array คอลัมน์เดียว ได้ "Cherry"
.
ไม่ต้องระบุ column_num เพราะมีแค่คอลัมน์เดียว นี่คือการใช้งานพื้นฐานที่สุดของ INDEX ครับ 😊

### 2. ตัวอย่างที่ 2: Foundation - ดึงค่าจาก Range สองมิติ

```excel
=INDEX(Products, 4, 2)
```

**ผลลัพธ์:** `45.00`

ดึงค่าจากแถวที่ 4 คอลัมน์ที่ 2 ของ Named Range "Products"
.
สมมติว่า Products เป็นตารางสินค้า (รหัส, ชื่อ, ราคา, สต็อก) แถวที่ 4 คอลัมน์ที่ 2 คือคอลัมน์ชื่อสินค้า ได้ราคา 45.00 บาท
.
ตรงนี้แนะนำให้ใช้ Named Range นะครับ อ่านง่ายกว่า A1:D10 เยอะ 😎

### 3. ตัวอย่างที่ 3: Practical - INDEX-MATCH แบบง่าย (แทน VLOOKUP)

```excel
=INDEX(Products[Price], MATCH("P003", Products[ProductID], 0))
```

**ผลลัพธ์:** `125.00`

MATCH ค้นหา "P003" ในคอลัมน์ ProductID พบที่ตำแหน่งที่ 3 → INDEX ดึงราคาจากแถวที่ 3 ได้ 125.00 บาท
.
นี่คือ INDEX-MATCH pattern ที่ยืดหยุ่นกว่า VLOOKUP เพราะไม่จำกัดทิศทางการค้นหา
.
ส่วนตัวผมชอบใช้แบบนี้มากกว่า VLOOKUP เพราะถ้าเผลอแทรกคอลัมน์ระหว่างกลาง... สูตรก็ไม่พัง 😎

### 4. ตัวอย่างที่ 4: Practical - ค้นหาจากซ้ายไปขวา (VLOOKUP ทำไม่ได้)

```excel
=INDEX(Employees[EmployeeID], MATCH("John Smith", Employees[FullName], 0))
```

**ผลลัพธ์:** `EMP001`

ค้นหาชื่อ "John Smith" ในคอลัมน์ FullName แล้วดึงรหัสพนักงานจากคอลัมน์ EmployeeID ซึ่งอยู่ทางซ้ายของคอลัมน์ค้นหา
.
VLOOKUP ทำไม่ได้เลย... แต่ INDEX-MATCH ทำได้สบายๆ 😎
.
นี่คือจุดเด่นที่ทำให้คนเลิกใช้ VLOOKUP แล้วหันมาใช้ INDEX-MATCH กันครับ

### 5. ตัวอย่างที่ 5: Advanced - Two-Way Lookup (Matrix Lookup)

```excel
=INDEX(SalesData, MATCH("Q2", Quarters, 0), MATCH("North", Regions, 0))
```

**ผลลัพธ์:** `285000`

ค้นหาข้อมูลจากตารางสองมิติ:
.
1. MATCH แรกหาแถว "Q2" ในรายการไตรมาส → พบแถวที่ 2
2. MATCH ที่สองหาคอลัมน์ "North" ในรายการภูมิภาค → พบคอลัมน์ที่ 3
3. INDEX ดึงค่าที่จุดตัด (Q2, North) = 285,000 บาท
.
นี่คือ two-way lookup ที่ VLOOKUP ทำไม่ได้ครับ 💡 เทคนิคนี้ใช้บ่อยมากกับตารางยอดขายที่มีหลายมิติ

### 6. ตัวอย่างที่ 6: Advanced - Return ทั้งคอลัมน์และใช้ร่วมกับฟังก์ชันอื่น

```excel
=AVERAGE(INDEX(SalesTable, 0, 4))
```

**ผลลัพธ์:** `45250.50`

INDEX(SalesTable, 0, 4) ใช้ row_num = 0 เพื่อ return ทั้งคอลัมน์ที่ 4 (เช่น ยอดขาย)
.
จากนั้น AVERAGE คำนวณค่าเฉลี่ย
.
เทคนิคนี้เจ๋งมากครับ 😎 ใช้ดึงข้อมูลทั้งคอลัมน์มาประมวลผลต่อด้วยฟังก์ชันอื่นได้ทันที ไม่ต้องมานั่งเลือก range เอง

### 7. ตัวอย่างที่ 7: Advanced - Dynamic Range กับ COUNTA

```excel
=SUM(A2:INDEX(A:A, COUNTA(A:A)))
```

**ผลลัพธ์:** `12500`

COUNTA(A:A) นับจำนวนเซลล์ที่มีข้อมูลในคอลัมน์ A (สมมติได้ 50)
.
INDEX(A:A, 50) ชี้ไปที่เซลล์ A50 → ได้ range แบบไดนามิก A2:A50
.
แล้ว SUM รวมค่า
.
เทคนิคนี้ผมชอบใช้ตอนที่ข้อมูลเพิ่มขึ้นเรื่อยๆ ครับ สูตรจะอัปเดตตามอัตโนมัติ ไม่ต้องมานั่งปรับ range ใหม่ทุกที 😎

### 8. ตัวอย่างที่ 8: Advanced - Reference Form กับหลาย Range

```excel
=INDEX((A1:C5, E1:G5, I1:K5), 2, 3, 2)
```

**ผลลัพธ์:** `75`

Reference form ที่มี 3 ranges: (A1:C5, E1:G5, I1:K5)
.
area_num=2 เลือก range ที่สอง (E1:G5) → แล้วดึงค่าจากแถวที่ 2 คอลัมน์ที่ 3 ของ range นั้น → ได้ G2 = 75
.
เทคนิคนี้ใช้เมื่อต้องการเลือกข้อมูลจากหลายพื้นที่ที่ไม่ติดกัน
.
ส่วนตัวผมไม่ค่อยได้ใช้นะครับ เพราะส่วนใหญ่ Array form ก็เพียงพอแล้ว 😅

### 9. ตัวอย่างที่ 9: Complex - INDEX-MATCH-MATCH กับ Approximate Match

```excel
=INDEX(PriceTable, MATCH(OrderQty, QtyBreaks, 1), MATCH(CustomerType, TypeList, 0))
```

**ผลลัพธ์:** `95.50`

ใช้ MATCH สองครั้งด้วย match_type ต่างกัน:
.
1. MATCH แรกใช้ 1 (approximate match) หา OrderQty ในช่วง QtyBreaks → เช่น 100 ชิ้นอยู่ในช่วง 51-150
2. MATCH ที่สองใช้ 0 (exact match) หา CustomerType → เช่น "VIP"
3. INDEX ดึงราคาที่เหมาะสม
.
ใช้สำหรับตารางราคาแบบขั้นบันได ครับ
.
ตรงนี้ต้องระวังนะ ต้องแน่ใจว่า QtyBreaks เรียงลำดับจากน้อยไปมาก ไม่งั้น approximate match จะให้ผลผิดได้ 💡

### 10. ตัวอย่างที่ 10: Complex - INDEX-MATCH ซ้อนกับ IFERROR สำหรับหลาย Criteria

```excel
=IFERROR(INDEX(Inventory[Stock], MATCH(1, (Inventory[ProductID]=F2)*(Inventory[Location]=F3), 0)), "Not Found")
```

**ผลลัพธ์:** `245`

ใช้ MATCH กับการคูณ boolean arrays: (ProductID=F2)*(Location=F3) สร้าง array ที่มีค่า 1 เฉพาะแถวที่ตรงเงื่อนไขทั้งสอง
.
MATCH หาตำแหน่งของค่า 1 → INDEX ดึงสต็อกจากแถวนั้น → IFERROR ป้องกันข้อผิดพลาดถ้าไม่พบ
.
เทคนิคนี้ใช้ค้นหาด้วยหลายเงื่อนไขครับ
.
แต่ต้องบอกว่า... ถ้ามี Excel 365 ใช้ FILTER จะง่ายกว่าเยอะ 😅 วิธีนี้ค่อนข้างซับซ้อนพอสมควร

## หมายเหตุเพิ่มเติม

💡 **Tip สำหรับ INDEX**: นี่คือหนึ่งในฟังก์ชันที่ผมใช้บ่อยที่สุดเลยครับ โดยเฉพาะตอนที่ใช้ร่วมกับ MATCH เป็น INDEX-MATCH pattern ซึ่งเหนือกว่า VLOOKUP หลายเรื่อง
.
ถ้าถามว่าควรจะเรียนรู้อะไรก่อนระหว่าง VLOOKUP กับ INDEX-MATCH ส่วนตัวผมแนะนำ INDEX-MATCH เลยครับ เพราะ:
- ยืดหยุ่นกว่า (ค้นหาได้ทุกทิศทาง)
- ไม่พังตอนแทรก/ลบคอลัมน์
- ใช้ได้ทุก Excel version
.
แต่ถ้ามี Excel 365 อยู่แล้ว... XLOOKUP จะง่ายกว่า INDEX-MATCH อีกนะครับ 😎

---

## เปรียบเทียบ Lookup Functions

| Feature | INDEX-MATCH | VLOOKUP | XLOOKUP |
|---------|-------------|---------|----------|
| **ค้นหาจากซ้ายไปขวา** | ✅ ได้ | ❌ ไม่ได้ | ✅ ได้ |
| **ค้นหาจากขวาไปซ้าย** | ✅ ได้ | ❌ ไม่ได้ | ✅ ได้ |
| **ทนทานต่อการแทรก/ลบคอลัมน์** | ✅ ไม่พัง | ❌ พัง | ✅ ไม่พัง |
| **Two-way lookup** | ✅ ง่าย | ❌ ยาก | ✅ ง่าย |
| **Return ทั้งแถว/คอลัมน์** | ✅ ได้ (row=0) | ❌ ไม่ได้ | ⚠️ ได้บางแบบ |
| **ประสิทธิภาพ (ข้อมูลใหญ่)** | ✅ ดี | ⚠️ ช้ากว่า | ✅ ดี |
| **Syntax ความเรียบง่าย** | ⚠️ ซับซ้อน | ✅ ง่าย | ✅ ง่ายที่สุด |
| **if_not_found ในตัว** | ❌ ใช้ IFERROR | ❌ ใช้ IFERROR | ✅ มีในตัว |
| **Excel compatibility** | ✅ ทุกเวอร์ชัน | ✅ ทุกเวอร์ชัน | ❌ เฉพาะ 365/2021 |

---

## INDEX Patterns ที่ใช้บ่อย

### 1. Basic INDEX-MATCH (แทน VLOOKUP)
```excel
=INDEX(return_range, MATCH(lookup_value, lookup_range, 0))
```
**ข้อดี:** ค้นหาได้ทุกทิศทาง ไม่จำกัดซ้าย-ขวา

### 2. Two-Way Lookup (Matrix)
```excel
=INDEX(table, MATCH(row_value, row_range, 0), MATCH(col_value, col_range, 0))
```
**ใช้เมื่อ:** ต้องการค้นหาจากตารางที่มีทั้ง row และ column headers

### 3. Return ทั้งคอลัมน์
```excel
=SUM(INDEX(range, 0, column_number))
=AVERAGE(INDEX(range, 0, 3))
```
**ใช้เมื่อ:** ต้องการดึงข้อมูลทั้งคอลัมน์มาคำนวณ

### 4. Return ทั้งแถว
```excel
=MAX(INDEX(range, row_number, 0))
```
**ใช้เมื่อ:** ต้องการดึงข้อมูลทั้งแถวมาหาค่าสูงสุด/ต่ำสุด

### 5. Dynamic Range
```excel
=SUM(A2:INDEX(A:A, COUNTA(A:A)))
```
**ใช้เมื่อ:** ต้องการ range ที่ขยายตามข้อมูล

### 6. Multiple Criteria (Excel เวอร์ชันเก่า)
```excel
=INDEX(return_range, MATCH(1, (criteria1_range=value1)*(criteria2_range=value2), 0))
```
**หมายเหตุ:** ต้อง Ctrl+Shift+Enter ใน Excel เก่า, Excel 365 ใช้ Enter ธรรมดา

---

## Common Errors และวิธีแก้

### #REF! Error
**สาเหตุ:** row_num หรือ column_num อยู่นอก range
```excel
❌ =INDEX(A1:C10, 15, 2)  // มีแค่ 10 แถว
✅ =INDEX(A1:C10, 5, 2)   // อยู่ใน range
```

### #VALUE! Error
**สาเหตุ:** พยายาม return ทั้งแถว/คอลัมน์ลงในเซลล์เดียว
```excel
❌ =INDEX(A1:E10, 0, 3)         // return array ลงเซลล์เดียว
✅ =SUM(INDEX(A1:E10, 0, 3))   // ใช้ฟังก์ชันรับ array
```

### #N/A Error (จาก MATCH)
**สาเหตุ:** MATCH ไม่พบค่าที่ค้นหา
```excel
❌ =INDEX(A:A, MATCH("XYZ", B:B, 0))  // "XYZ" ไม่มีใน B:B
✅ =IFERROR(INDEX(A:A, MATCH("XYZ", B:B, 0)), "ไม่พบ")
```

---

## Performance Tips

1. **หลีกเลี่ยง Whole Column References ในข้อมูลใหญ่**
   - ❌ ช้า: `=INDEX(A:A, MATCH(...))` (ตรวจสอบ 1 ล้าน rows)
   - ✅ เร็ว: `=INDEX(A2:A1000, MATCH(...))` (ตรวจสอบแค่ 999 rows)

2. **ใช้ Named Ranges หรือ Tables**
   - ✅ `=INDEX(SalesData[Amount], ...)` อ่านง่าย maintain ง่าย
   - ❌ `=INDEX($B$2:$B$500, ...)` อ่านยาก แก้ไขยาก

3. **XLOOKUP ดีกว่าถ้ามี Excel 365**
   - Simple lookups ใช้ XLOOKUP ง่ายกว่าและเร็วกว่า
   - INDEX-MATCH ใช้เมื่อต้องการความยืดหยุ่นพิเศษ

---

## Best Practices

✅ **DO:**
- ใช้ structured references (Table[Column]) แทน A1:B100
- ใส่ IFERROR ครอบเพื่อจัดการ errors
- ใช้ 0 ใน MATCH สำหรับ exact match
- ใช้ absolute references ($) สำหรับ ranges ที่ไม่เปลี่ยน

❌ **DON'T:**
- อย่าใช้ whole column ถ้าข้อมูลใหญ่มาก (ช้า)
- อย่าใช้ 1 หรือ -1 ใน MATCH ถ้าไม่แน่ใจว่าข้อมูลเรียงแล้ว
- อย่า hardcode row/column numbers ถ้าไม่จำเป็น
- อย่าลืมว่า INDEX นับจาก 1 ไม่ใช่ 0

## คำถามที่พบบ่อย

**Q: INDEX แตกต่างจาก VLOOKUP อย่างไร ควรใช้อันไหน?**

INDEX (โดยเฉพาะ INDEX-MATCH) มีข้อดีกว่า VLOOKUP หลายเรื่องครับ:
.
1. ค้นหาจากคอลัมน์ซ้ายไปขวาได้ (VLOOKUP ต้องเป็นซ้ายไปขวาเท่านั้น)
2. ไม่พังเมื่อแทรกหรือลบคอลัมน์ (VLOOKUP ใช้ column_index_num ที่เปลี่ยนตามโครงสร้าง)
3. ทำ two-way lookup ได้ง่าย
4. ประสิทธิภาพดีกว่าในตารางขนาดใหญ่
.
ส่วนตัวผมว่า... ถ้ามี Excel 365/2021 แนะนำใช้ XLOOKUP ดีกว่า ซึ่งรวมข้อดีของทั้งสองและใช้งานง่ายกว่า 😎

**Q: ใส่ row_num หรือ column_num เป็น 0 จะเกิดอะไร?**

INDEX จะ return reference ทั้งแถวหรือทั้งคอลัมน์ครับ 😊
.
ตัวอย่าง: INDEX(A1:E10, 0, 3) จะ return ทั้งคอลัมน์ C (คอลัมน์ที่ 3) จาก range นั้น
.
ซึ่งสามารถนำไปใช้กับฟังก์ชันอื่นได้:
- =SUM(INDEX(Data, 0, 3)) รวมค่าทั้งคอลัมน์ที่ 3
- =AVERAGE(INDEX(Data, 5, 0)) หาค่าเฉลี่ยทั้งแถวที่ 5
.
เป็นเทคนิคที่ทรงพลังมากสำหรับสูตรแบบไดนามิก 💡

**Q: Array form และ Reference form ต่างกันอย่างไร?**

Array form มี syntax: INDEX(array, row_num, [column_num]) → ใช้กับ range เดียว เหมาะสำหรับการใช้งานทั่วไป (95% ของกรณี)
.
Reference form มี syntax: INDEX(reference, row_num, [column_num], [area_num]) → รองรับหลาย range ที่ไม่ติดกัน เช่น (A1:C5, E1:G5) แล้วใช้ area_num เลือก range
.
ความแตกต่างหลัก:
- Array form: ใช้ range ติดกัน
- Reference form: ใช้หลาย range แยกกัน
.
ส่วนตัวผมว่า... ส่วนใหญ่ใช้ Array form ก็เพียงพอแล้วครับ 😊

**Q: ทำไม INDEX-MATCH จึงดีกว่า VLOOKUP กับข้อมูลขนาดใหญ่?**

INDEX-MATCH มีประสิทธิภาพดีกว่าเพราะ MATCH ค้นหาเฉพาะคอลัมน์เดียว (lookup column) เท่านั้น
.
ในขณะที่ VLOOKUP ต้องประมวลผล entire table_array ทุกครั้ง
.
เมื่อมีการ copy สูตรลงไปหลายพันแถว INDEX-MATCH จะเร็วกว่าเนื่องจาก Excel ต้องคำนวณ range ที่น้อยกว่า
.
นอกจากนี้ INDEX-MATCH ยังใช้ reference แบบ absolute ได้ง่ายกว่า ทำให้ copy สูตรแล้วไม่เสียครับ 😎

**Q: จะทำ Two-Way Lookup (Matrix Lookup) ด้วย INDEX ได้อย่างไร?**

ใช้ INDEX กับ MATCH สองชุดครับ:
.
=INDEX(data_table, MATCH(row_lookup, row_headers, 0), MATCH(col_lookup, col_headers, 0))
.
- MATCH แรกหาตำแหน่งแถว
- MATCH ที่สองหาตำแหน่งคอลัมน์
- INDEX ดึงค่าจากจุดตัด
.
ตัวอย่างจริง: ตารางราคาที่มีผลิตภัณฑ์เป็นแถวและภูมิภาคเป็นคอลัมน์ สามารถหาราคาของ "Product A" ใน "Region North" ได้ทันที 💡

**Q: INDEX กับ XMATCH ต่างจาก INDEX กับ MATCH อย่างไร?**

XMATCH เป็นฟังก์ชันใหม่ใน Excel 365 ที่พัฒนาจาก MATCH มีข้อดีคือ:
.
1. ค้นหาจากล่างขึ้นบนได้ (search_mode=-1)
2. รองรับ wildcard และ binary search mode
3. มี if_not_found ในตัว ไม่ต้องใช้ IFERROR
4. Syntax ชัดเจนกว่า
.
สำหรับ INDEX-XMATCH vs INDEX-MATCH:
- ถ้าใช้ Excel 365 → แนะนำ XMATCH เพราะมีความสามารถมากกว่า 😎
- ถ้าต้องการ compatibility กับเวอร์ชันเก่า → ใช้ MATCH ครับ

**Q: ทำไม INDEX ถึง return #REF! error?**

#REF! error เกิดเมื่อ row_num หรือ column_num อยู่นอก range ที่กำหนดครับ
.
ตัวอย่าง: =INDEX(A1:C10, 15, 2) → error เพราะมีแค่ 10 แถวแต่ขอแถวที่ 15
.
วิธีแก้:
1. ตรวจสอบว่า row_num และ column_num ไม่เกินขนาด range
2. ใช้ IFERROR ครอบเพื่อจัดการ error → =IFERROR(INDEX(...), "ไม่พบข้อมูล")
3. ถ้าใช้กับ MATCH ให้ตรวจสอบว่า MATCH พบค่าหรือไม่ (MATCH return #N/A ถ้าไม่พบ)
.
ตรงนี้เจอบ่อยมากเวลาใช้กับ MATCH ครับ 😅

**Q: ควรใช้ INDEX-MATCH หรือ XLOOKUP ในปัจจุบัน?**

ขึ้นอยู่กับสถานการณ์ครับ:
.
**ใช้ XLOOKUP ถ้า:**
1. ใช้ Excel 365 หรือ 2021
2. ต้องการ syntax ที่เรียบง่าย
3. ต้องการ if_not_found และ search_mode ในตัว
.
**ใช้ INDEX-MATCH ถ้า:**
1. ต้อง compatibility กับเวอร์ชันเก่า (Excel 2019 ลงมา)
2. ต้องการ return ทั้งแถว/คอลัมน์ด้วย row_num=0
3. ต้องการควบคุมละเอียดกว่า (เช่น ใช้ MATCH แบบ approximate)
.
**สรุป:** XLOOKUP ง่ายกว่าสำหรับ simple lookup แต่ INDEX-MATCH ยืดหยุ่นกว่าสำหรับ advanced scenarios 😎

**Q: INDEX รองรับเวอร์ชัน Excel ไหนบ้าง?**

INDEX รองรับทุกเวอร์ชันของ Excel ตั้งแต่ Excel 97 จนถึง Excel 365 ปัจจุบันครับ 😊
.
เป็นฟังก์ชันพื้นฐานที่มีมาตั้งแต่ต้นและไม่เคยเปลี่ยนแปลง behavior ทำให้เป็น universal function ที่ใช้ได้ในทุกสถานการณ์ โดยไม่ต้องกังวลเรื่อง compatibility
.
แตกต่างจากฟังก์ชันใหม่ เช่น XLOOKUP, FILTER ที่ใช้ได้เฉพาะ Excel 365/2021 เท่านั้น
.
นี่เป็นเหตุผลหนึ่งที่ทำให้ INDEX-MATCH ยังได้รับความนิยมอยู่เสมอครับ

## ฟังก์ชันที่เกี่ยวข้อง

- [MATCH – ค้นหาตำแหน่งของค่าในรายการ](https://www.thepexcel.com/functions/excel/lookup-and-reference/match/)
- [XMATCH – ฟังก์ชันค้นหาตำแหน่งข้อมูลขั้นสูง](https://www.thepexcel.com/functions/excel/lookup-and-reference/xmatch/)
- [VLOOKUP – ฟังก์ชันค้นหาค่าแนวตั้งจากตาราง](https://www.thepexcel.com/functions/excel/lookup-and-reference/vlookup/)
- [XLOOKUP – ฟังก์ชันค้นหาข้อมูลแนวตั้งและแนวนอน](https://www.thepexcel.com/functions/excel/lookup-and-reference/xlookup/)
- [HLOOKUP – ค้นหาข้อมูลแนวนอนในตาราง](https://www.thepexcel.com/functions/excel/lookup-and-reference/hlookup/)
- [ฟังก์ชัน OFFSET ใน Excel](https://www.thepexcel.com/functions/excel/lookup-and-reference/offset/)
- [INDIRECT – อ้างอิงเซลล์แบบไดนามิก](https://www.thepexcel.com/functions/excel/lookup-and-reference/indirect/)
- [CHOOSE – เลือกค่าตามลำดับ](https://www.thepexcel.com/functions/excel/lookup-and-reference/choose/)
- [FILTER – ฟังก์ชันกรองข้อมูลแบบไดนามิก](https://www.thepexcel.com/functions/excel/lookup-and-reference/filter/)

## แหล่งข้อมูลเพิ่มเติม

- [Microsoft Support: INDEX function](https://support.microsoft.com/en-us/office/index-function-a5dcf0dd-996d-40a4-a822-b56b061328bd) _(official)_
- [ExcelJet: Excel INDEX function](https://exceljet.net/excel-functions/excel-index-function) _(guide)_
- [AbleBits: Excel INDEX function with formula examples](https://www.ablebits.com/office-addins-blog/excel-index-function/) _(guide)_

---

_Source: [https://www.thepexcel.com/functions/excel/lookup-and-reference/index/](https://www.thepexcel.com/functions/excel/lookup-and-reference/index/)_
