Page 1 of 1
ขอวิธีแก้สูตร vlookup ข้อความใกล้เคียง
Posted: Sun Sep 12, 2021 8:40 pm
by ajsudkedt
เนื่องจากชื่อนามสกุล สะกดต่างกันนิดหน่อย
หากต้องการให้เทียบชื่อนามสกุลให้แสดงค่าข้อความใกล้คียง
โดยใช้ vlookup เทียบข้อความชื่อนามสกุลที่ใกล้เคียงกัน
จะต้องปรับสูตรอย่างไรตามไฟล์แนบครับ
Re: ขอวิธีแก้สูตร vlookup ข้อความใกล้เคียง
Posted: Sun Sep 12, 2021 9:52 pm
by norkaz
...
B2:B9
=IFERROR(LOOKUP(2,1/SEARCH(LEFT(sheet1!$A$2:$A$142,7),A2),sheet1!$A$2:$A$142),LOOKUP(2,1/SEARCH(RIGHT(sheet1!$A$2:$A$142,7),A2),sheet1!$A$2:$A$142))
C2:D9
=VLOOKUP($B2,sheet1!$A$2:$C$142,COLUMNS($B2:C2),0)
วิธีนี้เป็นการแก้ปัญหาเฉพาะหน้า ไม่สามารถใช้ได้ทุกครั้ง และทุกกรณี
เช่น ชื่อเหมือนกัน แต่คนละนามสกุล หรือ นามสกุลเดียวกัน แต่คนละชื่อ
ควรทำข้อมูล ให้ถูกต้อง ตามหลักการของฐานข้อมูลที่มาตรฐาน เช่น แยก ชื่อ นามสกุลออกจากกันให้ชัดเจน เว้นวรรค หรือ แยกคนละคอลัมน์ จะช่วยให้ การทำงานง่ายกว่าครับ
Re: ขอวิธีแก้สูตร vlookup ข้อความใกล้เคียง
Posted: Mon Sep 13, 2021 6:58 am
by ajsudkedt
ควรทำข้อมูล ให้ถูกต้อง ตามหลักการของฐานข้อมูลที่มาตรฐาน เช่น แยก ชื่อ นามสกุลออกจากกันให้ชัดเจน เว้นวรรค หรือ แยกคนละคอลัมน์ จะช่วยให้ การทำงานง่ายกว่าครับ
เนื่องจากมีชื่อที่สะกดเหมือนกัน ผมเลยต้องนำนามสกุลมาต่อกับชื่อด้วยครับ
Re: ขอวิธีแก้สูตร vlookup ข้อความใกล้เคียง
Posted: Mon Sep 13, 2021 7:00 am
by ajsudkedt
มีเปลี่ยนนามสกุลหนึ่งคน ให้ lookup เฉพาะชื่อ ได้ไหมครับ
Re: ขอวิธีแก้สูตร vlookup ข้อความใกล้เคียง
Posted: Mon Sep 13, 2021 7:08 am
by ajsudkedt
ขอถามต่อครับ
ตามภาพ ศรชี้ 1 เทียบเจอ ศรชี้ 2
แต่ ศรชี้ 3 เทียบไม่เจอกับ ศรชี้ 4
ทั้งที่มีการเปลี่ยนนามสกุลเหมือนกัน
เกิดจากสาเหตุใดครับ
Re: ขอวิธีแก้สูตร vlookup ข้อความใกล้เคียง
Posted: Mon Sep 13, 2021 8:07 am
by snasui
ajsudkedt wrote: Sun Sep 12, 2021 8:40 pm
เนื่องจากชื่อนามสกุล สะกดต่างกันนิดหน่อย
หากต้องการให้เทียบชื่อนามสกุลให้แสดงค่าข้อความใกล้คียง
โดยใช้ vlookup เทียบข้อความชื่อนามสกุลที่ใกล้เคียงกัน
จะต้องปรับสูตรอย่างไรตามไฟล์แนบครับ

งานลักษณะนี้
ควรใช้รหัสของแต่ละรายชื่อ ถ้าไม่มีก็ต้องสร้างขึ้นมาใหม่ครับ
ตัวอย่างสูตรสำหรับการค้นหาชื่อที่ใกล้เคียง เซลล์ B2 คีย์
=LOOKUP(2,1/(MAX(MMULT(ISNUMBER(SEARCH(MID($A3,TRANSPOSE(ROW(INDIRECT("1:"&LEN($A3)))),1),sheet1!$A$2:$A$142))+0,LEN(MID($A3,ROW(INDIRECT("1:"&LEN($A3))),1))))=MMULT(ISNUMBER(SEARCH(MID($A3,TRANSPOSE(ROW(INDIRECT("1:"&LEN($A3)))),1),sheet1!$A$2:$A$142))+0,LEN(MID($A3,ROW(INDIRECT("1:"&LEN($A3))),1)))),sheet1!$A$2:$A$142)
Ctrl+Shift+Enter > Copy ลงด้านล่าง
สูตรนี้จะทำให้ไฟล์ทำงานหนักไม่ควรใช้เป็นจำนวนมากครับ
Re: ขอวิธีแก้สูตร vlookup ข้อความใกล้เคียง
Posted: Mon Sep 13, 2021 8:33 am
by ajsudkedt
=LOOKUP(2,1/(MAX(MMULT(ISNUMBER(SEARCH(MID($A2,TRANSPOSE(ROW(INDIRECT("1:"&LEN($A2)))),1),sheet1!$A$2:$A$142))+0,LEN(MID($A2,ROW(INDIRECT("1:"&LEN($A2))),1))))=MMULT(ISNUMBER(SEARCH(MID($A2,TRANSPOSE(ROW(INDIRECT("1:"&LEN($A2)))),1),sheet1!$A$2:$A$142))+0,LEN(MID($A2,ROW(INDIRECT("1:"&LEN($A2))),1)))),sheet1!$A$2:$A$142)
หากต้องการให้แสดงค่าในคอลัมน์ C:D ด้วย ต้องปรับสูตรอย่างไรครับ
Re: ขอวิธีแก้สูตร vlookup ข้อความใกล้เคียง
Posted: Mon Sep 13, 2021 8:40 am
by snasui

ปรับตรงที่ระบายสีครับ
ajsudkedt wrote: Mon Sep 13, 2021 8:33 am
=LOOKUP(2,1/(...),
sheet1!$A$2:$A$142)
Re: ขอวิธีแก้สูตร vlookup ข้อความใกล้เคียง
Posted: Mon Sep 13, 2021 10:08 am
by ajsudkedt
=LOOKUP(2,1/(MAX(MMULT(ISNUMBER(SEARCH(MID($A10,TRANSPOSE(ROW(INDIRECT("1:"&LEN($A10)))),1),sheet1!$A$2:$A$142))+0,LEN(MID($A10,ROW(INDIRECT("1:"&LEN($A10))),1))))=MMULT(ISNUMBER(SEARCH(MID($A10,TRANSPOSE(ROW(INDIRECT("1:"&LEN($A10)))),1),sheet1!$A$2:$A$142))+0,LEN(MID($A10,ROW(INDIRECT("1:"&LEN($A10))),1)))),sheet1!$A$2:$A$142)
จากสูตรที่ใส่
เพิ่งสังเกตเห็นว่าขึ้นชื่อผิดคนครับ
Re: ขอวิธีแก้สูตร vlookup ข้อความใกล้เคียง
Posted: Mon Sep 13, 2021 10:23 am
by snasui

ถ้าถูกต้องจะขึ้นค่าใดครับ
สูตรนี้เป็นการค้นหาว่าอักขระที่มีในคำนั้น ๆ ตรงกับคำใดในช่วงเซลล์เป้าหมายมากที่สุด ถ้าในช่วงเซลล์เป้าหมายไม่มีคำนั้นอยู่ก็จะเอาคำที่มีอักขระใกล้เคียงกันที่สุดมาใช้ คำว่าอักขระใกล้เคียงกันไม่ได้ดูเป็นคำแต่ดูเป็นรายอักขระ ไม่ว่าจะอยู่ในตำแหน่งไหนของคำ ต้องทำความเข้าใจตรงนี้ก่อนครับ
Re: ขอวิธีแก้สูตร vlookup ข้อความใกล้เคียง
Posted: Mon Sep 13, 2021 11:55 am
by Bo_ry
B2
=VLOOKUP(LEFT($A2,MATCH(2,1/COUNTIFS(sheet1!$A$2:$A$142,"*"&LEFT(A2,ROW($A$1:$A$20))&"*")))&"*",sheet1!$A$2:$C$142,1,0)
หรือ
=LOOKUP("ๆ",VLOOKUP(T(IF(1,"*"&MID(A2,COLUMN(A$1:INDEX($1:$1,LEN(A2)-3)),MAX((COUNTIFS(sheet1!$A$2:$A$142,"*"&MID(A2,COLUMN(A$1:INDEX($1:$1,LEN(A2)-3)),ROW($A$3:$A$30))&"*")>0)*LEN(MID(A2,COLUMN(A$1:INDEX($1:$1,LEN(A2)-3)),ROW($A$3:$A$30)))))&"*")),sheet1!$A$2:$A$142,1,0))
Ctrl+Shift+Enter
C2
=VLOOKUP($B2,sheet1!$A$2:$C$142,COLUMNS($B2:C2),0)
Re: ขอวิธีแก้สูตร vlookup ข้อความใกล้เคียง
Posted: Mon Sep 13, 2021 9:21 pm
by ajsudkedt
# Bo_ry
#snasui
ขอบพระคุณทั้ง 2 ท่านมาก ๆ ครับ