Page 1 of 1
สูตรดึงข้อมูลบางส่วนจากข้อความโดยเทียบกับฐานข้อมูลที่มีอยู่
Posted: Tue Sep 16, 2025 2:35 pm
by isensosuikar
รบกวนเขียนสูตรดึงข้อมูลจาก คอลัมย์ C ที่ตรงกับ ฐานข้อมูลในคอลัมย์ A
โดยผลลัพท์ที่ต้องการอยู่ที่คอลัมย์ E ครับ
Re: สูตรดึงข้อมูลบางส่วนจากข้อความโดยเทียบกับฐานข้อมูลที่มีอยู่
Posted: Tue Sep 16, 2025 6:20 pm
by snasui

ตัวอย่างสูตรครับ
เซลล์ 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
Re: สูตรดึงข้อมูลบางส่วนจากข้อความโดยเทียบกับฐานข้อมูลที่มีอยู่
Posted: Wed Sep 24, 2025 3:18 pm
by isensosuikar
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
ได้ตามที่ต้องการเลยครับ ขอบคุณมากครับ ขอบคุณที่อธิบายที่มาของสูตรด้วยครับ