---
title: "แกะสูตร Excel สุดซับซ้อน ให้เข้าใจง่ายขึ้นด้วย AI Chatbot : ThepExcel GPT"
url: https://www.thepexcel.com/thepexcelgpt-complex-formula/
type: post
date: 2024-06-04
updated: 2025-12-22
author: Sira Ekabut
categories: [Excel Advanced Formula, Excel, AI Chatbot]
tags: [IFNA, COUNTIFS, TOCOL, XMATCH, array, UNIQUE, LET, COMPLEX, formula, HSTACK, index, IFERROR, MATCH]
---

# แกะสูตร Excel สุดซับซ้อน ให้เข้าใจง่ายขึ้นด้วย AI Chatbot : ThepExcel GPT

เพื่อนๆ เคยเจอปัญหานี้ไหมครับ? เวลาที่ต้องพบกับสูตร Excel ที่ซับซ้อนจนแทบจะหลงทาง ไม่รู้ว่ามันทำงานยังไง และที่สำคัญคือจะแก้ไขยังไง? เอาล่ะ วันนี้ผมมีตัวช่วยเจ๋งๆ ที่เพื่อนๆ ต้องลอง นั่นก็คือใช้ [AI Chatbot ที่ชื่อว่า ThepExcel GPT](https://chatgpt.com/g/g-GQjMXWNEy-thepexcel-gpt) เข้ามาช่วยในการแกะสูตรพวกนี้ ตอนนี้ก็มีให้ใช้ได้ฟรีด้วยนะครับ!

 

เจ้า AI นี้เขามีชื่อว่า “[ThepExcel GPT](https://chatgpt.com/g/g-GQjMXWNEy-thepexcel-gpt)” แค่ส่งสูตรไปหรือจะส่งรูปสูตรไป มันก็สามารถอธิบายให้เราเข้าใจได้อย่างง่ายดาย เหมือนได้คุยกับผู้เชี่ยวชาญกันเลย 555

 

## แนะนำ ThepExcel GPT

 

[![1](https://www.thepexcel.com/wp-content/uploads/2024/05/ThepExcelGPT-sidebar2-1.png)](https://chatgpt.com/g/g-GQjMXWNEy-thepexcel-gpt)

 

ThepExcel GPT นี้ ผมตั้งใจพัฒนาขึ้นมาเพื่อตอบปัญหาเกี่ยวกับ Excel ให้การแก้ไขสูตรคลุมเครือเป็นเรื่องกล้วยๆ สำหรับทุกคน

 

บางคนอาจจะสงสัยว่า AI จะช่วยได้แค่ไหน ผมเลยจะมาทดสอบให้ดูว่า AI นี้จะจัดการสูตรยากๆ ได้รึเปล่า พร้อมแนะนำเคล็ดลับในการจัดการสูตรอีกด้วยครับ

 

หากเพื่อนๆ ลองใช้ [ThepExcel GPT AI Chatbot](https://chatgpt.com/g/g-GQjMXWNEy-thepexcel-gpt) แล้วรู้สึกอย่างไร อย่าลืมบอกผมด้วยที่นี่ [https://forms.gle/Ku7xn9jrkwhjBWBRA](https://forms.gle/Ku7xn9jrkwhjBWBRA)

 

## Feedback การใช้งาน

 

เล่าสักนิดว่าทำไมผมถึงคิดทำ AI Chatbot ขึ้นมา เนื่องจากผมเจอปัญหาในการตอบคำถามจากแฟนเพจอยู่บ่อยๆ เพราะไม่มีเวลาแหม ก็เลยคิดว่าคงดีถ้ามี AI Chatbot ช่วยเราตอบคำถาม Excel แทน จนในปลายปี 2023 ผมก็สร้างเจ้า ThepExcel GPT ขึ้นมา แต่ประสบปัญหาสำคัญคือ ตอนนั้นต้องเสียเงินสมัคร ChatGPT Plus ถึงจะใช้ได้ หลายคนเลยไม่ได้ลองใช้เจ้า AI นี้ T_T

 

## ที่มาที่ไป

 

แต่ข่าวดีคือ เมื่อต้นเดือนพฤษภาคม 2567 OpenAI ได้ปล่อยตัว GPT-4o และเปิดให้ใช้ GPTs ได้ฟรี!

 

**ล่าสุด วันที่ 30 พฤษภาคม 2567 นี้เอง คนที่ใช้ ChatGPT ฟรีก็ใช้ GPTs ได้แล้วครับ ผมก็เลยแจก Link ให้ใช้กันฟรีๆ **(แต่ก็แน่นอนแหละ คนใช้เยอะ limit ก็เต็มไว 555)

 ![2](https://www.thepexcel.com/wp-content/uploads/2024/06/mira-gpt4o-1024x697.jpg) 

ปล. ถ้าเจ้า ThepExcel GPT เจอคำถามยากสุดๆ อย่าง DAX หรือ Python มันจะบอกให้ไปถาม Bot ตัวเฉพาะทางที่ผมทำขึ้นมา อีกด้วย

 

ทีนี้มาทดสอบกันดูนะ ว่า AI จะช่วยเราไขความลับของสูตร Excel ยากๆ อย่างไร?

 

ตัวอย่างโจทย์ เช่น เราต้องการแสดงค่าที่ไม่ซ้ำจากคอลัมน์ B2:B10

 

## ทดสอบการแกะสูตร Case 1

 

ถ้าเพื่อนๆ มี Excel เวอร์ชั่นใหม่ (หรือ Google Sheets) ที่รองรับ Dynamic Array ก็สามารถเขียนสูตรลงที่เซลล์ C2 ได้ง่ายๆ เลย

 ![3](https://www.thepexcel.com/wp-content/uploads/2024/06/2024-06-03-17_50_01-Book1-Excel-500x407.png) 

ผลลัพธ์ก็จะมีโชว์ในเซลล์ C2:C5 โดยอัตโนมัติ

 

```
=UNIQUE(B2:B10)
```

 

แต่ถ้าเพื่อนๆ ใช้ Excel รุ่นเก่าที่ไม่มีฟังก์ชัน UNIQUE ก็อาจจะเศร้าเล็กน้อย 😭

 ![4](https://www.thepexcel.com/wp-content/uploads/2024/06/2024-06-04-07_56_04-complex.xlsx-Excel-500x445.png) 

ถ้าเราลองไปหาสูตรในอินเทอร์เน็ต เราอาจเจอสูตรหนึ่งที่ต้องเขียนในเซลล์ C2 โดยก่อนอื่นต้องกด Ctrl+Shift+Enter เพราะมันเป็นสูตรแบบ Array Formula ก่อนที่จะทำการ Copy ลงมาในเซลล์ล่างๆ

 

วิธีแกะสูตรนี้ถ้าเรายังใช้ Excel เก่า ก็อาจต้องใช้เครื่องมือ Formula -> Evaluate Formula ซึ่งจะแสดงขั้นตอนการทำงานทีละขั้นตอน ซึ่งอาจไม่สะดวกนักเพราะเราไม่สามารถตรวจเช็คแต่ละส่วนได้ตามใจ

 

```
=IFERROR(INDEX($B$2:$B$10, MATCH(0, COUNTIFS($C$1:C1, $B$2:$B$10), 0)), "")
```

 ![5](https://www.thepexcel.com/wp-content/uploads/2024/06/2024-06-03-18_18_55-Book1-Excel.png) 

### วิธีแกะสูตรดูทีละ Steps

 

แต่ถ้าเรามี Excel เวอร์ชั่น 2016 ขึ้นไป เราจะมี Add-ins ชื่อว่า Excel Labs ที่เจ๋งมาก มีเครื่องมือ Advanced Formula Environment ที่ทรงพลังกว่า

 ![6](https://www.thepexcel.com/wp-content/uploads/2024/06/2024-06-04-06_45_05-complex.xlsx-Excel-1024x583.png) 

มันสามารถอธิบายสูตรทีละขั้นได้อย่างดี ให้เราเห็นภาพได้ง่ายๆ เพราะแค่เอา Mouse ไป Hover ที่สูตรก็เห็นผลเป็น Array ได้เลย

 ![7](https://www.thepexcel.com/wp-content/uploads/2024/06/2024-06-04-06_47_58-complex.xlsx-Excel-1024x324.png) 

ไม่ว่าจะใช้วิธีไหนก็ตาม ถ้าเราไม่เข้าใจฟังก์ชันในสูตร เราก็จะแตกสูตรต่อไม่ได้ ในยุคนี้การถาม AI Chatbot ถือเป็นวิธีช่วยแก้ปัญหาที่ดีมาก

 

ลองถาม [ThepExcel GPT](https://chatgpt.com/g/g-GQjMXWNEy-thepexcel-gpt) (พร้อมแนบรูป) มันสามารถจะอธิบายได้อย่างดี

 ![8](https://www.thepexcel.com/wp-content/uploads/2024/06/2024-06-04-06_51_04--1024x532.png) 

ได้รับคำอธิบายประมาณนี้ ผมจะขออธิบายการทำงานของสูตรในเซลล์ C3 นะครับ:

 

### วิธีแกะสูตรโดยถาม AI Chatbot

 

**สรุป:** สูตรนี้ช่วยสร้างรายการไม่ซ้ำจากคอลัมน์ B ในคอลัมน์ C ด้วยการใช้ฟังก์ชัน INDEX และ MATCH ร่วมกับ COUNTIFS แค่นี้เพื่อนๆ ก็ได้ผลลัพธ์แล้วครับ

 

```
AI Prompt:

ผมมีข้อมูลแบบนี้

ได้สูตรเพื่อ List รายการจาก B2:B10 ออกมาแบบไม่ซ้ำกัน แต่ไม่เข้าใจสูตร ช่วยอธิบายการทำงานที
สูตรที่เขียนใน C3 คือ
=IFERROR(INDEX($B$2:$B$10, MATCH(0, COUNTIFS($C$1:C2, $B$2:$B$10), 0)), "")
```

 ![9](https://www.thepexcel.com/wp-content/uploads/2024/06/2024-06-04-06_59_00-ChatGPT-ThepExcel-GPT-1024x483.png) 

**Confidence: 100%**

 ![10](https://www.thepexcel.com/wp-content/uploads/2024/06/2024-06-04-07_03_44-ChatGPT-ThepExcel-GPT.png)  

เอาล่ะ มาดูกันถี่ถ้วนกับสิ่งที่ AI อธิบายนะ เรื่องของเหตุผลในการเลือกใช้ฟังก์ชันนี้เพื่อทำให้ได้ค่าที่ไม่ซ้ำจากคอลัมน์ B ไปยังคอลัมน์ C ครับ

 

```
=IFERROR(INDEX($B$2:$B$10, MATCH(0, COUNTIFS($C$1:C2, $B$2:$B$10), 0)), "")
```

 

**1. COUNTIFS**

 
1. **COUNTIFS($C$1:C2, $B$2:$B$10)**: 
    - ฟังก์ชัน `COUNTIFS` ใช้เพื่อทำการนับจำนวนครั้งที่เงื่อนไขหลายๆ ข้อเป็นจริงพร้อมกัน โดยในที่นี้ `COUNTIFS($C$1:C2, $B$2:$B$10)` จะนับจำนวนครั้งที่ค่าในช่วง `$B$2:$B$10` ปรากฏในช่วง `$C$1:C2` (คือค่าที่อยู่ในคอลัมน์ C ด้านบนของเซลล์ปัจจุบัน)
    - ค่าที่ได้จะเป็นอาร์เรย์ เช่น `{0, 1, 0, 0, 1, 0, 0, 0, 0}` โดยแต่ละค่าบ่งบอกถึงจำนวนครั้งที่ค่าจากคอลัมน์ B ปรากฏในช่วง `$C$1:C2`
2. **MATCH(0, COUNTIFS($C$1:C2, $B$2:$B$10), 0)**: 
    - ฟังก์ชัน `MATCH` ใช้เพื่อหาตำแหน่งของค่า 0 ในอาร์เรย์ที่ได้จาก `COUNTIFS` ซึ่งหมายถึงตำแหน่งที่ค่าจากคอลัมน์ B ยังไม่ปรากฏในคอลัมน์ C ด้านบนของเซลล์ปัจจุบัน
    - ผลลัพธ์จะเป็นตำแหน่งในช่วง `$B$2:$B$10` ที่มีค่าเป็น 0 ในอาร์เรย์จาก `COUNTIFS`
3. **INDEX($B$2:$B$10, MATCH(0, COUNTIFS($C$1:C2, $B$2:$B$10), 0))**: 
    - ฟังก์ชัน `INDEX` จะใช้ตำแหน่งที่ได้จาก `MATCH` เพื่อดึงค่าจากช่วง `$B$2:$B$10`
    - ค่าที่ได้จะเป็นค่าจากคอลัมน์ B ที่ยังไม่ปรากฏในคอลัมน์ C
4. **IFERROR(INDEX($B$2:$B$10, MATCH(0, COUNTIFS($C$1:C2, $B$2:$B$10), 0)), “”)**: 
    - ฟังก์ชัน `IFERROR` ใช้เพื่อจัดการกับข้อผิดพลาดที่อาจเกิดขึ้นจากการใช้ `MATCH` ซึ่งหากไม่มีค่าที่ตรงกับเงื่อนไขเลย (เช่น ทุกค่าจากคอลัมน์ B ปรากฏในคอลัมน์ C แล้ว) ฟังก์ชัน `MATCH` จะคืนค่า `#N/A` ซึ่งจะทำให้ `INDEX` เกิดข้อผิดพลาด
    - หากเกิดข้อผิดพลาด `IFERROR` จะคืนค่าเป็นข้อความว่าง (“”)

 

ฟังก์ชัน `COUNTIFS` ใช้เพื่อตรวจสอบการปรากฏของค่าจาก `$B$2:$B$10` ในช่วง `$C$1:C2` ว่ามีการปรากฏกี่ครั้ง ซึ่งช่วยให้เรารู้ว่าค่าใดยังไม่ถูกดึงไปแสดงที่คอลัมน์ C

 

**2. MATCH**

  

#### ถาม AI เพิ่มเติม เพื่อให้ได้สิ่งที่อยากรู้

 

ฟังก์ชัน `MATCH` ใช้เพื่อตรวจสอบตำแหน่งแรกที่ค่าตรงกับ 0 ในอาร์เรย์จาก `COUNTIFS` ที่แปลว่าค่าในคอลัมน์ B ที่ยังไม่ถูกใช้งาน

 

**3. INDEX**

 

```
AI Prompt:
อยากเข้าใจหลักการคิด ทำไมถึงเลือกใช้ฟังก์ชันเหล่านี้ 
```

 

ฟังก์ชัน `INDEX` ดึงค่าจากตำแหน่งที่ได้จาก `MATCH` ในช่วง `$B$2:$B$10` ซึ่งเป็นแหล่งข้อมูลหลัก

  

**4. IFERROR**

 

ฟังก์ชัน `IFERROR` ป้องกันข้อผิดพลาดซึ่งจะเกิดจาก `MATCH` ถ้าไม่พบค่า 0 โดยจะคืนค่าเป็นข้อความว่างแทนที่จะโชว์ Error

 

**กระบวนการทำงานเบื้องหลัง:**

 

ตัวอย่างนี้จะสร้างรายการไม่ซ้ำในคอลัมน์ C โดยหาราคาจากคอลัมน์ B อย่างมีประสิทธิภาพ

 

**Confidence: 100%**

 

สูตรนี้จริงๆ ต้องการรู้ว่าค่าตัวแรกนั้นอยู่ลำดับไหนในช่วงจากนั้นใช้ INDEX ดึงค่าจากตำแหน่งนั้นออกมา ถ้าหาลำดับได้นี่ก็จะได้คำตอบแล้ว

 

แล้วเลขลำดับพวกนี้จะหาได้จากไหนหล่ะ??

 

มันอาจหาได้หลายทาง แต่ในสูตรนี้สร้างลำดับ 0,1 ด้วย COUNTIFS ซึ่งใช้ MATCH หาลำดับแรกที่ตรงกับเลข 0

 

แนวคิดหลักคือ ถ้าต้องการค่าที่ไหนสร้างเลข 0 ให้ ถ้าไม่ต้องการให้ 1 (อย่างเช่น รับค่าไม่ซ้ำจากที่เป็นคำตอบแล้ว) จากนั้นหา 0 แรกก็จะได้ผล

 

ใน Excel รุ่นเก่า ฟังก์ชันยังไม่ค่อยเก่งมาก ทำให้เราต้องใช้สูตรที่ยาวซับซ้อนราวกับใช้มีดไม่ใช่เลื่อยไฟฟ้าตัดต้นไม้ แต่ในเวอร์ชั่นใหม่ๆ มีฟังก์ชันช่วยเยอะทำให้ง่ายขึ้น

 
1. **ตรวจสอบการมีอยู่ของค่าในช่วงที่ต้องการ**: 
    - ใช้ `COUNTIFS` เพื่อตรวจสอบว่าแต่ละค่าในคอลัมน์ B ปรากฏในคอลัมน์ C ด้านบนของเซลล์ปัจจุบันกี่ครั้ง โดยมองหาค่าที่นับได้เป็น 0 (แสดงว่ายังไม่ปรากฏ)
2. **ค้นหาตำแหน่งของค่าที่ไม่ซ้ำกัน**: 
    - ใช้ `MATCH` เพื่อหาตำแหน่งแรกที่มีค่า 0 ในอาร์เรย์จาก `COUNTIFS` ซึ่งบอกเราว่าค่าที่ไม่ซ้ำกันอยู่ที่ตำแหน่งใด
3. **ดึงค่าที่ไม่ซ้ำกันมาแสดง**: 
    - ใช้ `INDEX` เพื่อดึงค่าจากคอลัมน์ B ตามตำแหน่งที่ได้จาก `MATCH`
4. **จัดการกับข้อผิดพลาด**: 
    - ใช้ `IFERROR` เพื่อคืนค่าเป็นข้อความว่างในกรณีที่ไม่พบค่าที่ตรงกับเงื่อนไข

 

เช่น การทำ VLOOKUP ที่ต้องการทุกคำตอบที่เจอ ใน Excel เก่าจะมีสูตรยาวๆ แต่ในรุ่นใหม่ๆ แค่ฟังก์ชัน FILTER ก็สำเร็จเลย

 

แต่ถ้าใครยังใช้ Excel เก่าที่ไม่มีฟังก์ชันแบบ UNIQUE/FILTER ก็มีทางเลือกที่ดีคือ ใช้ Power Query ซึ่งใช้ง่ายมากแต่ต้องมี Excel 2016 เป็นอย่างน้อย

  

### ขออธิบายเพิ่มเติมโดยผมเอง

 

ในกลุ่ม[Excel Super Fan แฟนพันธุ์แท้เอ็กเซล](https://www.facebook.com/groups/ExcelSuperFan/)ใน Facebook เป็นที่ที่มีคนเก่งๆ มาตอบคำถาม เช่น Excel Wizard, เมษ พงษ์อำไพ และอีกหลายท่าน

 ![11](https://www.thepexcel.com/wp-content/uploads/2024/06/2024-06-03-18_15_58-Book1-Excel.png) 

อย่างโจทย์นี้

 

ดาวน์โหลดไฟล์ตัวอย่าง – [https://lnkd.in/gcn62ByP](https://lnkd.in/gcn62ByP)

 

ดูคำตอบแล้วอาจจะช๊อคกับสูตรของหลายคน…

 

ปล. ตัวอย่างนี้คือย่อแล้ว จริงๆ ยังมีที่ซับซ้อนกว่านี้ และคำตอบอาจต่างกันไปตามการคิดของแต่ละคน

 

```
=IFERROR(INDEX($B$2:$B$10, MATCH(0, COUNTIFS($C$1:C2, $B$2:$B$10), 0)), "")
```

 

แม้ว่าคำตอบมาจากการใช้สูตรใน Excel เวอร์ชันล่าสุด แต่ก็ยังซับซ้อนเพราะเป็นการใช้สูตร Array แบบเขียนทีเดียวได้ผลลัพธ์ออกมาทั้งตาราง

 

```
COUNTIFS(

{0;"แอปเปิ้ล"}, 

{"แอปเปิ้ล";"แอปเปิ้ล";"มะละกอ";"กล้วย";"กล้วย";"แอปเปิ้ล";"กล้วย";"ส้ม";"ส้ม"}

)
```

 

สาเหตุคือถ้าต้องทดออกมาไว้อื่น อาจอธิบายได้ยาก แต่การใช้สูตรเดียวพอเห็นคำตอบได้เลย เหมาะสำหรับ Copy และPaste เป็นการฝึกสมองในกลุ่มครับ

 

และบอกเลยว่าในเวอร์ชั่นใหม่ๆ เราสามารถประกาศตัวแปรในสูตรได้ด้วย LET และสร้างฟังก์ชันเองด้วย LAMBDA

 

```
{1;1;0;0;0;1;0;0;0}
```

 

ฟังก์ชันเหล่านี้มีประสิทธิภาพมาก เชื่อว่าหลายคนอาจไม่ค่อยรู้จัก แต่เราขอแนะนำให้ลองศึกษาต่อดูครับ

 

ลองแกะสูตรที่คุณโบ Excel Wizard ตอบแบบนี้ดูสามารถทำง่ายๆ

 

### ทำไมสูตรยุ่งยากจัง?

 

ใช้แป๊ะที่ตารางแล้วเห็นผลเลย

 

ถ้าแกะสูตรแบบละเอียดเอง ผมแนะนำให้ใช้ Excel Labs: Advanced Formula Environment ช่วยจัดระเบียบสูตรให้อ่านง่ายขึ้น

 

การจัดแบบนี้เห็นชัดว่า c, d คือการประกาศตัวแปร และใช้ HSTACK ตั้ง List วันที่โปรแกรมไว้เรียบร้อย แล้วตามด้วยการใช้ INDEX ดึงข้อมูลที่เหมาะสมออกจาก C2:D7

 

## ทดสอบการแกะสูตร Case 2

 

ที่ต้องพิจารณาให้ชัดเจนคือ ส่วนที่ดึงค่าจาก C2:D7

 

ซึ่งในนี้ใช้ XMATCH(c, d) หาแบบ Exact Match ถ้าเจอใช้ได้เลย ไม่เจอก็ใช้ IFNA ใส่เป็นค่าอื่นแทนคือ (XMATCH(c, TOCOL(d + {-1, 1})) + 1) / 2

 ![12](https://www.thepexcel.com/wp-content/uploads/2024/06/2024-06-03-17_24_04-Excel-Super-Fan-แฟนพันธุ์แท้เอ็กเซล-_-Facebook.png) 

ลองถาม AI ดูว่า ThepExcel GPT ว่ามันจะช่วยเราได้ไหม?

 

มาเลยเพื่อนๆ ดูที่สูตรนี้ AI บอกว่าฟังก์ชัน LET มีขั้นตอนในการจัดการข้อมูลในตาราง

 ![13](https://www.thepexcel.com/wp-content/uploads/2024/06/2024-06-03-17_24_26-Excel-Super-Fan-แฟนพันธุ์แท้เอ็กเซล-_-Facebook.png) 

มาดูแต่ละส่วนในสูตรทีละหน่อย

 

### ทำไมมันถึงซับซ้อน?

 

หลังจากทำงานเสร็จ สูตรนี้จะคืนค่าสำหรับตารางที่มีวันที่ในคอลัมน์ A และวันที่ใกล้เคียงใน C2 ร่วมกับ Vendor

 

บางที AI เจอบางส่วนที่เข้าใจยาก ให้ AI ลองอธิบายเพิ่มดูดีไหม?

 

ได้ครับ มาดูอย่างละเอียด:

 

ส่วนนี้เหมาะสำหรับหาวันที่ใกล้เคียงที่สุดในช่วง `d` (Delivery Date) และหาค่าเฉลี่ยจากตำแหน่งสองตำแหน่งที่ใกล้เคียงที่สุด:

 

**สรุป:**

 

ส่วนนี้ของสูตรทำให้หาตำแหน่งที่ใกล้ที่สุดในวันที่จากช่วง `d` โดยดูค่าเฉลี่ยตำแหน่งสองจุดที่ใกล้เคียงที่สุด ลดความเบี่ยงเบนและหาได้อย่างง่ายดายตามวันที่จัดส่ง

 
- HSTACK = เอา Array มาต่อกันในแนวนอน (ข้างๆ)
- VSTACK = เอา Array มาต่อกันในแนวตั้ง (บนล่าง)
- TAKE = คัดเลือก Array มาบางส่วน
- DROP = ทิ้ง Array ไปบางส่วน
- TOCOL = เปลี่ยนโครงสร้างให้กลายเป็น Array 1 คอลัมน์
- TOROW = เปลี่ยนโครงสร้างให้กลายเป็น Array 1 แถว
- LET = ประกาศตัวแปรภายในสูตร (คล้ายๆ VAR ใน DAX หรือ let…in.. ของ MCode)
- LAMBDA = สร้างฟังก์ชันขึ้นมาใช้เอง มักใช้ร่วมกับ LAMBDA Helper Function เช่น 
    - MAP = โยนค่าจาก Range เข้าไปให้ LAMBDA ทีละค่า
    - SCAN = ส่ง Array เข้าไปคำนวณสะสม แสดงผลสะสมระหว่างทางออกมาเป็น Array
    - REDUCE = ส่ง Array เข้าไปคำนวณสะสม แสดงผลสะสมสุดท้ายออกมาอันเดียว

 

### วิธีแกะสูตร

 

[Confidence 95%]

 

```
=LET(c,A2:A30,d,C2:C7,IFNA(HSTACK(c,INDEX(C2:D7,
IFNA(XMATCH(c,d),(XMATCH(c,TOCOL(d+{-1,1}))+1)/2),{1,2})),""))
```

 

บางครั้งอาจจะต้องเข้าใจให้ลึกซึ้งกว่าที่ AI อธิบาย โดยเฉพาะเรื่องของวัตถุประสงค์ที่มี (…+1) /2 เรามาคุยกันต่อให้เข้าใจ

 ![14](https://www.thepexcel.com/wp-content/uploads/2024/06/2024-06-04-12_45_50-PQ_Challenge_186.xlsx-Excel-1024x497.png) 

ถ้าลองเขียนสูตรตรง **d + {-1, 1}** จะได้ผลแบบนี้

 ![15](https://www.thepexcel.com/wp-content/uploads/2024/06/2024-06-04-07_39_24-.png) 

แล้วพอแปลงเป็น TOCOL จะเทียบเป็นคอลัมน์เดียว

 

ซึ่งไอเดียนี้คือวันที่จะเพิ่มมากขึ้นและหาเจอตามเกณฑ์แต่สิ่งที่ต้องทำคือหาตำแหน่งอ้างอิงมาจาก Delivery Date เก่าและ Vendor เดิม เพราะจากตั้งต้นมี 6 วัน ทำงานออกมาเป็น 12 วัน

 

ถ้าพบลำดับ 3 หรือ 4 ที่แท้จริงจะถือว่าเป็นลำดับ 2

 

ดังนั้นต้องคำนวณด้วยการหาร 2 ซึ่งเป็นเคล็ดไม่ลับ โดยรู้ว่า INDEX จะใช้ค่านับเต็มแบบ +1 แล้วหาร 2 ให้ได้ลำดับที่กลมกลืน

 

```
AI Prompt:

อธิบายสูตร excel นี้ได้ไหม

=LET(c,A2:A30,d,C2:C7,IFNA(HSTACK(c,INDEX(C2:D7,IFNA(XMATCH(c,d),(XMATCH(c,TOCOL(d+{-1,1}))+1)/2),{1,2})),""))
```

 ![16](https://www.thepexcel.com/wp-content/uploads/2024/06/2024-06-04-07_43_40-ChatGPT-ThepExcel-GPT-1024x624.png)  

พอได้ลำดับที่เหมาะสม ใช้ INDEX ดึงค่ามา ซึ่งจะใส่ {1,2} เพื่อดึงข้อมูลทั้งคอลัมน์ 1 และ 2

 

สุดท้ายได้ผลลัพธ์สมบูรณ์จากสูตรนี้

 
1. **LET(c, A2****, d, C2, …)**: 
    - ฟังก์ชัน LET จะช่วยให้เราประกาศตัวแปรภายในสูตรได้ ในที่นี้ c คือช่วงของวันที่ในคอลัมน์ A (`A2:A30`) และ d คือช่วงของวันที่ในคอลัมน์ C (`C2:C7`).
2. **IFNA(HSTACK(c, …), “”)**: 
    - ฟังก์ชัน IFNA ใช้เพื่อคืนค่าที่กำหนดหากฟังก์ชันที่อยู่ใน IFNA เกิดข้อผิดพลาด ในที่นี้จะคืนค่าเป็นช่องว่างถ้ามีข้อผิดพลาด
    - HSTACK ใช้เพื่อรวมข้อมูลในแนวนอน ในที่นี้คือการรวมช่วงของวันที่ใน c กับผลลัพธ์จาก INDEX.
3. **INDEX(C2****, IFNA(XMATCH(c, d), (XMATCH(c, TOCOL(d + {-1, 1})) + 1) / 2), {1, 2})**: 
    - XMATCH(c, d) จะค้นหาค่าจาก c ในช่วง d และคืนค่าเป็นตำแหน่ง
    - IFNA ใช้เพื่อจัดการกับข้อผิดพลาด ถ้า XMATCH ไม่พบค่าใน d จะใช้การคำนวณเพิ่มเติมเพื่อค้นหาวันที่ใกล้เคียงในช่วง d โดยใช้ XMATCH กับ TOCOL(d + {-1, 1})
    - INDEX ใช้เพื่อดึงข้อมูลจากช่วง C2โดยใช้ตำแหน่งที่ได้จาก XMATCH, ในที่นี้ {1, 2} จะดึงค่าจากทั้งคอลัมน์ C และ D

 

แม้ AI Chatbot อย่าง ThepExcel GPT จะช่วยอธิบายสูตร Excel ที่ซับซ้อนได้ดี แต่ในบางครั้งสำหรับสูตรที่ซับซ้อนมาก ก็อาจต้องค่อยๆ ทำความเข้าใจหรือถาม AI เพิ่มก็ได้ครับ

 

อย่างไรก็ดี สูตรในชีวิตจริงส่วนใหญ่ไม่ค่อยซับซ้อนถึงเพียงนี้ ถาม AI ได้ดังนั้น นำรูปประกอบไปด้วยแล้วลองดูครับ มันจะช่วยได้เป็นมากครับ

  

การใช้ AI Chatbot อย่าง ThepExcel GPT ช่วยให้การทำความเข้าใจสูตร Excel ซับซ้อนง่ายขึ้น แค่ส่งสูตรหรือรูปไป AI ก็อธิบายให้เข้าใจได้และยังค่อยๆ ตอบคำถามให้เราได้

 

```
AI Prompt:

เน้นอธิบายส่วนนี้ (XMATCH(c, TOCOL(d + {-1, 1})) + 1) / 2
```

  

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

 

```
(XMATCH(c, TOCOL(d + {-1, 1})) + 1) / 2
```

 

เพื่อนๆ ที่สนใจลองใช้ ThepExcel GPT ในการแกะสูตร Excel ไปที่ลิงก์นี้ได้เลยครับ: [https://chatgpt.com/g/g-GQjMXWNEy-thepexcel-gpt](https://chatgpt.com/g/g-GQjMXWNEy-thepexcel-gpt)

 
1. **TOCOL(d + {-1, 1})**:
    - ฟังก์ชัน TOCOL จะเปลี่ยนช่วง `d` ให้เป็นคอลัมน์
    - การบวก `{-1, 1}` เป็นการสร้างช่วงของวันที่ที่เพิ่มและลดหนึ่งวันจากวันที่ในช่วง `d`
    - ผลลัพธ์จะเป็นคอลัมน์ของวันที่ที่ขยายออกมาจากช่วง `d`
  
  ตัวอย่าง: 
    - ถ้า `d` คือ `C2:C7` (มีวันที่ 01/05/2024 ถึง 26/05/2024)
    - `TOCOL(d + {-1, 1})` จะเป็นคอลัมน์ที่มีวันที่ก่อนและหลังช่วงนี้ เช่น 30/04/2024, 02/05/2024, 07/05/2024, เป็นต้น
2. **XMATCH(c, TOCOL(d + {-1, 1}))**: 
    - ฟังก์ชัน XMATCH ค้นหาค่าจากช่วง `c` (Calendar Date) ในช่วงของวันที่ที่ปรับเปลี่ยน (เพิ่มหรือลดหนึ่งวัน) ซึ่งได้จาก `TOCOL(d + {-1, 1})`
    - คืนค่าตำแหน่งของวันที่ในช่วงที่ขยายนี้ซึ่งใกล้เคียงกับค่าจากช่วง `c`
3. **(XMATCH(c, TOCOL(d + {-1, 1})) + 1) / 2**:
    - เมื่อได้ตำแหน่งของวันที่ใกล้เคียงจาก XMATCH แล้ว จะทำการคำนวณค่าเฉลี่ยของตำแหน่งนี้
    - `+ 1` และ `/ 2` ใช้เพื่อปรับตำแหน่งให้ได้ค่ากลางระหว่างตำแหน่งสองตำแหน่งที่ใกล้เคียงที่สุด
  
  ตัวอย่าง: 
    - ถ้า XMATCH คืนค่าตำแหน่งเป็น 4
    - `(4 + 1) / 2` จะเท่ากับ `2.5`
    - ค่านี้จะใช้เป็นตำแหน่งเฉลี่ยระหว่างสองตำแหน่งเพื่อหาแถวที่ใกล้เคียงที่สุด

 

หวังว่าบทความนี้จะมีประโยชน์กับทุกท่านนะครับ เอาล่ะ สู้ๆ ไปด้วยกันในการเรียนรู้ครับ!

 

ส่วนนี้ของสูตรจะค้นหาค่าตำแหน่งที่ใกล้เคียงที่สุดในช่วงวันที่ที่ขยายออกมาจากช่วง `d` โดยใช้ฟังก์ชัน XMATCH แล้วคำนวณค่าเฉลี่ยของตำแหน่งสองตำแหน่งที่ใกล้เคียงที่สุด ด้วยการบวกหนึ่งและหารสองเพื่อลดความเบี่ยงเบนและหาค่าที่ใกล้เคียงที่สุดในวันที่จัดส่ง.

 

[Confidence 95%]

  

### อธิบายเพิ่มเติม

 

จากที่ AI อธิบายมา มีบางส่วนที่อาจยังไม่ถูกต้องนัก โดยเฉพาะเรื่องขอววัตถุประสงค์ในการเขียนสูตรแล้วมี (…+1) /2 ในช่วงท้าย เดี๋ยวเรามาทำความเข้าใจกัน

 

ถ้าลองเขียนสูตรแค่ ตรง **d + {-1, 1}** มันจะได้ผลแบบนี้

 ![17](https://www.thepexcel.com/wp-content/uploads/2024/06/2024-06-04-12_09_07-PQ_Challenge_186.xlsx-Excel.png) 

พอทำเป็น TOCOL ก็จะได้เป็นคอลัมน์เดียวแบบนี้

 ![18](https://www.thepexcel.com/wp-content/uploads/2024/06/2024-06-04-12_10_49-PQ_Challenge_186.xlsx-Excel.png) 

ซึ่ง OK แหละ แบบนี้ช่วงวันที่มันก็จะเยอะึ้นมา ทำให้สามารถหาเจอได้ตามเกณฑ์ที่กำหนด อย่างไรก็ตาม อย่าลืมว่าสิ่งที่ต้องการคือตำแหน่งที่จะเอาไปใช้อ้างอิงใน Delivery Date + Vendor อันเดิม ดังนั้น เนื่องจากสมมติเดิม มี 6 วัน พอแตกแบบใหม่ ก็จะเป็น 6*2 = 12 วัน

 

ดังนั้นสมมติว่าใน List เจอเป็นตัวที่ 3 หรือ 4 ของจริงก็ถือว่าเป็นลำดับ 2

 

แบบนี้เราก็เลยต้องคำนวณย้อนกลับ โดยเอาไปหาร 2 แต่ทีนี้มันมี Trick พิเศษนิดหน่อย คือ คุณ Excel Wizard เค้ารู้อยู่แล้วว่า INDEX มันเอาลำดับที่เป็นจำนวนเต็มเท่านั้น ถ้าใส่ลำดับ 2.5 ก็จะเทียบเท่ากับ 2 ได้เลย

 ![19](https://www.thepexcel.com/wp-content/uploads/2024/06/2024-06-04-12_20_37-PQ_Challenge_186.xlsx-Excel-500x403.png) 

ดังนั้นเค้าเลยใช้วิธี +1 เข้าไปก่อนที่จะหาร 2 เพื่อให้ลำดับ Perfect นั่นเอง (ซึ่งจริงๆ ไม่เกี่ยวกับการหาค่าเฉลี่ยตามที่ AI อธิบาย แต่ว่าอย่างน้อยมันก็ทำให้เราพอคลำทางถูก)

 ![20](https://www.thepexcel.com/wp-content/uploads/2024/06/2024-06-04-12_16_54-PQ_Challenge_186.xlsx-Excel-1024x551.png) 

แล้วพอได้ลำดับที่ถูกต้อง ก็ใช้ INDEX ดึงค่าออกมา ซึ่ง Excel Wizard มีการใส่ {1,2} แปลว่าให้ดึงผลทั้งคอลัมน์ 1 และ 2 ออกมาทั้งคู่เลย

 

สุดท้ายก็ได้แบบนี้ ซึ่งได้ผลลัพธ์ทั้งหมดออกมาจากสูตรเดียว

 ![21](https://www.thepexcel.com/wp-content/uploads/2024/06/2024-06-04-12_42_11-PQ_Challenge_186.xlsx-Excel-1024x472.png) 

## ข้อจำกัดของ AI ในการอธิบายสูตรและการแก้ไข

 

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

 

อย่างไรก็ตาม ในชีวิตจริงสูตรที่เราเจอส่วนใหญ่แล้วจะไม่ได้ซับซ้อนขนาดที่ผมเอามาให้ดูหรอกครับ ดังนั้นถาม AI ได้เลย เอารูปประกอบให้มันดูด้วยนะ มันตอบได้ เชื่อผม

 

## สรุป

 

การใช้ AI Chatbot อย่าง ThepExcel GPT สามารถช่วยให้เราเข้าใจสูตร Excel ที่ซับซ้อนได้ง่ายขึ้นอย่างมาก เพียงแค่ส่งสูตรหรือรูปภาพไป มันก็จะช่วยแกะและอธิบายให้เราเข้าใจได้อย่างเป็นขั้นตอน และยังสามารถตอบคำถามข้อสงสัยเพิ่มเติมได้อีกด้วย

 

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

 

หากสนใจลองใช้ ThepExcel GPT ในการแกะสูตร Excel สามารถเข้าไปที่ลิงก์นี้ได้เลยครับ: [https://chatgpt.com/g/g-GQjMXWNEy-thepexcel-gpt](https://chatgpt.com/g/g-GQjMXWNEy-thepexcel-gpt)

 

หวังว่าบทความนี้จะเป็นประโยชน์กับทุกท่านนะครับ สู้ๆ กับการเรียนรู้ไปด้วยกันครับ!

---

_Source: [https://www.thepexcel.com/thepexcelgpt-complex-formula/](https://www.thepexcel.com/thepexcelgpt-complex-formula/)_
