:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

สอบถาม vlookup vba ครับ

Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่

Post a reply


This question is a means of preventing automated form submissions by spambots.
Smilies
:D :thup: :cp: :flw: :rz: :sg: :tt: :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :ard: :arl: :aru: :| :mrgreen: :geek: :ugeek:

BBCode is ON
[img] is ON
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: สอบถาม vlookup vba ครับ

Re: สอบถาม vlookup vba ครับ

#30

by lnongkungl » Tue Mar 03, 2020 4:44 pm

ไฟล์จริงที่ใช้งานมีเพียงสูตร Sum ตัวเลขแค่ 3 ช่อง ครับและตัวเลขที่ Sum มีแค่ 3-4 ตัวเลขแค่นั้นเอง อาจจะเป็นช่วง range ที่กำหนดกว้างไปอย่างที่บอกก็ได้ครับ เดี๋ยวผมลองไปปรับดู

ขอบคุณครับ

Re: สอบถาม vlookup vba ครับ

#29

by puriwutpokin » Mon Mar 02, 2020 5:59 pm

ลองดูว่าไฟล์​จริงมีสูตร​เยอะไหมครับ
และลองกำหนดช่วงจากที่ A:G
เป็น A1:G100ประมาณ​นี้ดูครับ

Re: สอบถาม vlookup vba ครับ

#28

by lnongkungl » Mon Mar 02, 2020 1:31 pm

ผมลอง Run แล้วครับ เป็นไปตามที่ต้องการ แต่รู้สึกว่ามันหน่วงๆแปลกๆครับ พอกด run ปุ๊ป มันจะไม่ขึ้น msgbox ทันที มันจะค้างแปปนึงประมาณ 1 นาที พอขึ้น msgbox มาแล้ว กด OK ก็จะค้างอีกประมาณ 1-2 นาทีครับ กว่าจะเป็นหน้าปกติ มันไม่ทันทีครับ หรือมัน check code ให้หมดก่อนหรือป่าวครับ ถึงจะจบ แต่ผมก็ใส่ code เพิ่มไปอีกหน่อย แต่มันก็ยังช้าเหมือนเดิมครับ ไม่เข้าใจว่า ช้า หรือหน่วง เพราะอะไร

Code: Select all

Workbooks.Open ("C:\Users\it-support.cmk\Desktop\àÅÕ¹ẺDBform\a.xlsx")
Dim myrange As Range
Set myrange = Range("A:G")
With Workbooks("b.xlsm").Worksheets(1)
lname = Application.VLookup(name, myrange, 2, False)
If IsError(lname) Then
MsgBox "äÁèÁÕ¢éÍÁÙÅ"
ActiveWorkbook.Close SaveChanges:=False 'ที่เพิ่มเข้าไปครับ
Exit Sub 'ที่เพิ่มเข้าไปครับ
Else

Re: สอบถาม vlookup vba ครับ

#27

by puriwutpokin » Mon Mar 02, 2020 12:18 pm

lnongkungl wrote: Mon Mar 02, 2020 10:03 am ถ้าตามที่ผมเข้าใจคือ เราไปดักไว้ด้วย Application.IFError ไว้ก่อนใช่มั้ยครับ เมื่อเรามาใส่ IF IsError อีก ครั้ง มันเลยไม่ทำงาน

หรือถ้าผมเข้าใจผิดตรงไหน รบกวนช่วย อธิบายเพิ่มหน่อยครับ เพื่อความเข้าใจอย่างถูกต้องและนำไปปรับใช้ในอนาคต ครับ
ใช่ครับ ต้อง Test เงื่อนไขก่อนครับ :D :thup:

Re: สอบถาม vlookup vba ครับ

#26

by lnongkungl » Mon Mar 02, 2020 10:03 am

ถ้าตามที่ผมเข้าใจคือ เราไปดักไว้ด้วย Application.IFError ไว้ก่อนใช่มั้ยครับ เมื่อเรามาใส่ IF IsError อีก ครั้ง มันเลยไม่ทำงาน

หรือถ้าผมเข้าใจผิดตรงไหน รบกวนช่วย อธิบายเพิ่มหน่อยครับ เพื่อความเข้าใจอย่างถูกต้องและนำไปปรับใช้ในอนาคต ครับ

Re: สอบถาม vlookup vba ครับ

#25

by puriwutpokin » Thu Feb 27, 2020 7:37 pm

ปรับตรงส่วนนี้ครับ

Code: Select all

With Workbooks("b.xlsm").Worksheets(1)
lname = Application.VLookup(name, myrange, 2, False)
If IsError(lname) Then
MsgBox "ไม่มีข้อมูล"
Else

Re: สอบถาม vlookup vba ครับ

#24

by lnongkungl » Thu Feb 27, 2020 3:43 pm

รบกวนอีกเรื่องครับ สุดท้ายของโปรเจคแล้วครับ

พอดีว่าผมลองหา code ที่เป็นการแจ้งเตือนว่า ถ้าไม่มีข้อมูลที่เราจะ lookup แล้วให้ขึ้น msgbox ไม่มีข้อมูล แต่พอลองเอามาใส่ใน code ดู ปรากฏว่า มัน error ครับ

Code: Select all

Sub lookup()
Dim name, lname, r, t, m, e, sg As Range
Set name = Range("C4")
Set lname = Range("E4")
Set r = Range("G4")
Set t = Range("C7")
Set m = Range("C8")
Set e = Range("C9")
Set sg = Range("E12")

Application.ScreenUpdating = False
Workbooks.Open ("C:\Users\it-support.cmk\Desktop\àÅÕ¹ẺDBform\a.xlsx")
Dim myrange As Range
Set myrange = Range("A:G")
With Workbooks("b.xlsm").Worksheets(1)
If IsError(lname) Then       'เริ่มตรงนี้ครับ
MsgBox "äÁèÁÕ¢éÍÁÙÅ"
Else
lname = Application.IfError(Application.WorksheetFunction.VLookup(name, myrange, 2, False), "")
r = Application.IfError(Application.WorksheetFunction.VLookup(name, myrange, 3, False), "")
t = Application.IfError(Application.WorksheetFunction.VLookup(name, myrange, 4, False), "")
m = Application.IfError(Application.WorksheetFunction.VLookup(name, myrange, 5, False), "")
e = Application.IfError(Application.WorksheetFunction.VLookup(name, myrange, 6, False), "")
sg = Application.IfError(Application.WorksheetFunction.VLookup(name, myrange, 7, False), "")
End If
End With

ActiveWorkbook.Close SaveChanges:=False
End Sub
รบกวนช่วยดูหน่อยครับว่ามัน error เพราะอะไร ผมจะได้เข้าใจและนำไปปรับใช้ใน โปรเจคหน้า ต่อไปครับ
Attachments
b.xlsm
(21.23 KiB) Downloaded 15 times
a.xlsx
(9.47 KiB) Downloaded 13 times

Re: สอบถาม vlookup vba ครับ

#23

by lnongkungl » Thu Feb 27, 2020 1:29 pm

จริงด้วยครับ มัวแต่ห่วงเรื่อง code มองข้าม format cell ไปได้ไง

ขอบคุณครับ ท่าน puriwutpokin

Re: สอบถาม vlookup vba ครับ

#22

by puriwutpokin » Thu Feb 27, 2020 1:01 pm

ให้ Format เซล C4 และ E13 เป็น Text ดูครับ

Re: สอบถาม vlookup vba ครับ

#21

by lnongkungl » Thu Feb 27, 2020 12:10 pm

ลองแล้วครับ ทำได้แค่ขาบันทึกข้อมูลกลับ (save)
ถ้าเป็นการดึงข้อมูลเก่ามา (lookup) แล้วในตารางมี ==== อยู่ ก็ติดเหมือนเดิมครับ

Re: สอบถาม vlookup vba ครับ

#20

by puriwutpokin » Thu Feb 27, 2020 11:32 am

เปลี่ยน เอา Value ออกตามนี้ครับ

Code: Select all

 Range("A" & Rows.Count).End(xlUp).Offset(1) = name
 Range("A" & Rows.Count).End(xlUp).Offset(, 1) = lname
 Range("A" & Rows.Count).End(xlUp).Offset(, 2) = r
 Range("A" & Rows.Count).End(xlUp).Offset(, 3) = t
 Range("A" & Rows.Count).End(xlUp).Offset(, 4) = m
 Range("A" & Rows.Count).End(xlUp).Offset(, 5) = e
 Range("A" & Rows.Count).End(xlUp).Offset(, 6) = sg

Re: สอบถาม vlookup vba ครับ

#19

by lnongkungl » Thu Feb 27, 2020 10:14 am

เจอปัญหาอีกแล้วครับ เมื่อ cell บาง cell ต้องพิมพ์ ==== หรือ ---- เพื่อเป็นตัวปิดยอดรวม ซึ่งมันใช้ border ของ cell ไม่ได้ เพราะมันจะไม่ตรงกับข้อความที่เราใส่เข้าไป ผมลอง copy ภายใน sheet เดียวกันไม่มีปัญหา code ไม่ติดอะไร

แล้วปัญหาก็ติดอยู่ที่ว่า เมื่อ copy.value ข้าม sheet แล้ว code จะ error ทันทีเมื่อเจอข้อความชุดนี้ เพราะจะติดข้อความถามให้ใส่ ' ให้ของ excel

ผมใช้ application.displayalerts = true ก็ไม่ได้ผลครับ พยายามหาใน google แล้วก็ไม่เจอซักที

รบกวนด้วยครับ
Attachments
Capture.PNG
Capture.PNG (15.38 KiB) Viewed 166 times
a.xlsx
(9.39 KiB) Downloaded 14 times
b.xlsm
(20.86 KiB) Downloaded 15 times

Re: สอบถาม vlookup vba ครับ

#18

by lnongkungl » Sun Feb 23, 2020 4:02 pm

ขอบคุณครับท่าน puriwutpokin น่าจะลด code ได้หลายบรรทัดเลย เดี๋ยวลองดูครับ

Re: สอบถาม vlookup vba ครับ

#17

by puriwutpokin » Sun Feb 23, 2020 2:50 pm

ลองปรับเป็น

Code: Select all

Sub save()
Dim name, lname, r, t, m, e, sg As Range
Set name = Range("C4")
Set lname = Range("E4")
Set r = Range("G4")
Set t = Range("C7")
Set m = Range("C8")
Set e = Range("C9")
Set sg = Range("E12")
Application.ScreenUpdating = False
Workbooks.Open ("C:\Users\it-support.cmk\Desktop\เลียนแบบDBform\a.xlsx")
 Range("A" & Rows.Count).End(xlUp).Offset(1).Value = name.Value
 Range("A" & Rows.Count).End(xlUp).Offset(, 1).Value = lname.Value
 Range("A" & Rows.Count).End(xlUp).Offset(, 2).Value = r.Value
 Range("A" & Rows.Count).End(xlUp).Offset(, 3).Value = t.Value
 Range("A" & Rows.Count).End(xlUp).Offset(, 4).Value = m.Value
 Range("A" & Rows.Count).End(xlUp).Offset(, 5).Value = e.Value
 Range("A" & Rows.Count).End(xlUp).Offset(, 6).Value = sg.Value
 ActiveWorkbook.save
 ThisWorkbook.Activate
 Application.ScreenUpdating = True
End Sub

Re: สอบถาม vlookup vba ครับ

#16

by lnongkungl » Sun Feb 23, 2020 1:21 pm

ขอบคุณครับ ผมว่าผมหาดีแล้วนะ ยังพลาดได้

เมื่อเขียนครบจน run ได้ตามต้องการแล้ว ทีนี้มาดูในส่วนของการ copy ไปใส่ข้อมูลอีกที่นึง ดูแล้วมันจะยาวมากเลยครับ ขนาดแค่สร้างตารางมาเพื่อลองเขียนสูตรเล็กๆ ยังยาวขนาดนี้ พอจะมี Loop หรือ code ที่จะเขียนสั้นเพื่อลดความยาวของสูตรในจุดนี้ได้มั้ยครับ เพราะงานจิง column ยาวเป็น 100 เลย ไฟล์ตัวอย่างทดสอบนี่แค่ 7 column เองยังยาวขนาดนี้

Code: Select all

Sub save()
Dim name, lname, r, t, m, e, sg As Range
Set name = Range("C4")
Set lname = Range("E4")
Set r = Range("G4")
Set t = Range("C7")
Set m = Range("C8")
Set e = Range("C9")
Set sg = Range("E12")

'ตั้งแต่ตรงนี้
Application.ScreenUpdating = False
Workbooks.Open ("C:\Users\it-support.cmk\Desktop\àÅÕ¹ẺDBform\a.xlsx")
name.Copy
Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
Application.CutCopyMode = False
lname.Copy
Range("A" & Rows.Count).End(xlUp).Offset(0, 1).PasteSpecial xlPasteValues
Application.CutCopyMode = False
r.Copy
Range("A" & Rows.Count).End(xlUp).Offset(0, 2).PasteSpecial xlPasteValues
Application.CutCopyMode = False
t.Copy
Range("A" & Rows.Count).End(xlUp).Offset(0, 3).PasteSpecial xlPasteValues
Application.CutCopyMode = False
m.Copy
Range("A" & Rows.Count).End(xlUp).Offset(0, 4).PasteSpecial xlPasteValues
Application.CutCopyMode = False
e.Copy
Range("A" & Rows.Count).End(xlUp).Offset(0, 5).PasteSpecial xlPasteValues
Application.CutCopyMode = False
sg.Copy
Range("A" & Rows.Count).End(xlUp).Offset(0, 6).PasteSpecial xlPasteValues
Application.CutCopyMode = False
'ถึงตรงนี้

Workbooks("a.xlsx").save
Workbooks("a.xlsx").Close


End Sub
Attachments
a.xlsx
(9.14 KiB) Downloaded 8 times
b.xlsm
(20.3 KiB) Downloaded 13 times

Re: สอบถาม vlookup vba ครับ

#15

by puriwutpokin » Sun Feb 23, 2020 12:38 pm

ผิด 2 จุดครับ

Code: Select all

Range("A" & Row.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
ต้องเป็น ตกตัว Rows.Count ไม่ใส่ตัว S ตกไปครับ

Code: Select all

Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
และตรงนี้

Code: Select all

Application.CutCopyMode = fasle
ต้องเป็น สลับตำแหน่ง S กับ L

Code: Select all

Application.CutCopyMode = False

Re: สอบถาม vlookup vba ครับ

#14

by lnongkungl » Sun Feb 23, 2020 11:51 am

งง เหมือนกันครับ ช่วยดูให้ทีครับว่าผมพิมพ์อะไรผิดตรงไหน ผมก็เช็คดีแล้วนะครับว่ามันก็ไม่ผิด แต่ทำไมถึง error ไล่ดูทุกตัวอักษรก็ไม่ผิดนะครับ หรือผมพลาดตรงไหน

แต่ไฟล์ที่ท่าน puriwutpokin แนบมาผมเอามา run ได้นะครับ

งงไปใหญ่
Attachments
b.xlsm
(19.58 KiB) Downloaded 9 times

Re: สอบถาม vlookup vba ครับ

#13

by puriwutpokin » Sun Feb 23, 2020 11:12 am

ลองแนบไฟล์ที่ใส่โค้ดนี้มาดูครับ
ไม่ก็ลองไฟล์นี้ดูครับ ผมรันก็ปกติครับ
Attachments
b.xlsm
(19.01 KiB) Downloaded 11 times

Re: สอบถาม vlookup vba ครับ

#12

by lnongkungl » Sun Feb 23, 2020 9:12 am

ก็ยังติดเหมือนเดิมครับ บรรทัดเดิมเลย
Attachments
Capture.PNG
Capture.PNG (10.75 KiB) Viewed 205 times

Re: สอบถาม vlookup vba ครับ

#11

by puriwutpokin » Thu Feb 20, 2020 7:47 pm

ปรับเป็น

Code: Select all

' Other code...
Application.ScreenUpdating = False
Workbooks.Open ("C:\Users\it-support.cmk\Desktop\เลียนแบบDBform\a.xlsx")
name.Copy
Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
Application.CutCopyMode = False
' Other code...

Top