EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)ได้ตามที่ต้องการเลยครับ ขอบคุณมากครับ ขอบคุณที่อธิบายที่มาของสูตรด้วยครับsnasui wrote: Tue Sep 16, 2025 6:20 pmตัวอย่างสูตรครับ
เซลล์ E2 คีย์
=LOOKUP(2,1/(ISNUMBER(SEARCH($A$2:$A$9,C2))),$A$2:$A$9)
Enter > Copy ลงด้านล่าง
เซลล์ E8 จะติด #N/A เนื่องจากข้อความใน C8 ไม่ตรงกับค่าใดในคอลัมน์ A
คำอธิบายทีละส่วน
=LOOKUP(2,1/(ISNUMBER(SEARCH($A$2:$A$9,C2))),$A$2:$A$9)
SEARCH($A$2:$A$9,C2)
ค้นหาว่าแต่ละคำในช่วง $A$2:$A$9 ปรากฏอยู่ในข้อความของเซลล์ C2 หรือไม่ ถ้าพบ จะคืนค่าตำแหน่งตัวอักษรที่พบ (เป็นตัวเลข) ถ้าไม่พบจะคืนค่า error
ISNUMBER(...)
ตรวจสอบว่าแต่ละผลลัพธ์จาก SEARCH เป็นตัวเลขหรือไม่ ถ้าใช่ แสดงว่าเจอคำนั้นในข้อความ
1/(...)
แปลง TRUE/FALSE เป็นตัวเลข TRUE → 1 → 1/1 = 1 FALSE → 0 → 1/0 = error ผลลัพธ์คือ array ที่มีค่า 1 เฉพาะตำแหน่งที่เจอคำ
LOOKUP(2, ..., $A$2:$A$9)
ค้นหาค่า 2 ใน array ที่ได้จาก
1/(ISNUMBER(...))
เนื่องจากไม่มีค่า 2 จริง ๆ ใน array นี้ LOOKUP จะเลือกค่าล่าสุดที่น้อยกว่า 2 ซึ่งก็คือ 1 แล้วคืนค่าจากตำแหน่งเดียวกันใน $A$2:$A$9