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
:D ตัวอย่างสูตรครับ

เซลล์ 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 :D ตัวอย่างสูตรครับ

เซลล์ 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
ได้ตามที่ต้องการเลยครับ ขอบคุณมากครับ ขอบคุณที่อธิบายที่มาของสูตรด้วยครับ