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 เทียบข้อความชื่อนามสกุลที่ใกล้เคียงกัน
จะต้องปรับสูตรอย่างไรตามไฟล์แนบครับ
:D งานลักษณะนี้ควรใช้รหัสของแต่ละรายชื่อ ถ้าไม่มีก็ต้องสร้างขึ้นมาใหม่ครับ

ตัวอย่างสูตรสำหรับการค้นหาชื่อที่ใกล้เคียง เซลล์ 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
:D ปรับตรงที่ระบายสีครับ
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
:D ถ้าถูกต้องจะขึ้นค่าใดครับ :?:

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

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 ท่านมาก ๆ ครับ