ดึงข้อมูลจากต่างไฟล์ด้วยสูตร Vlookup โดยเขียน VBA
HTML-код
- Опубликовано: 4 дек 2024
- -Excel Automation: ดึงข้อมูลจากต่างไฟล์ด้วยสูตร Vlookup โดยเขียน VBA
การเขียนใช้ function ต่าง ๆ ใน VBA มีลักษณะคล้ายกับการเขียนใน Spreadsheet ฉะนั้น หาก user เข้าใจ และสามารถใช้ Function ต่าง ๆ ใน Spreadsheet ของ Excel ได้ดี ก็มีส่วนช่วยในการใช้ Function ใน VBA เช่นกัน
แต่จะมีความต่างบ้างบางประการคือ...
1) ใน VBA จะไม่มี Argument help ให้ ฉะน้้นผู้ใช้ต้องมีความแม่นยำในการใช้ Function ต่าง ๆ พอสมควร
2) การอ้างอิงพื้นที่ต่าง ๆ จะไม่สะดวกเหมือนการใช้ mouse click ใน Spreadsheet (ดูในไลฟ์)
3) หากผลลัพธ์ Error จะเกิดการ Debug โค้ดจะไม่ทำงานต่อ ซึ่งแตกต่างจากการใช้ Function ใน Spreadsheet เราจึงต้อง ใช้ Error trap ช่วย
ขอให้สนุกกับการชม ครับ
....#หากสนใจเรียน_VBA_กับผม.....
👉 สมัครเรียน VBA (สอนสด) ได้ที่ลิงค์นี้เลย excelchannel.c...
👉สอนสดเจอตัว ที่ SCG experience เลียบด่วนรามอินทรา
**กรุณาทักมาจองที่ก่อน **
#รับจำนวนจำกัดเพียง_5_ท่าน
👉สอนสดทาง ZOOM (สะดวกไม่ต้องเดินทาง)
รับจำนวนจำกัด 10 ท่าน
👉 หรือ ทักมาคุยกันก่อนที่ m.me/excelbypichart หรือ โทร. 099-084-2562
🔸 เรียนจบมี...
มี Certificate
รับเข้ากลุ่มปิด Facebook เพื่อพูดคุยสอบถามเรียนรู้เพิ่มเติม
สามารถชมคลิปการเรียนย้อนหลังได้ตลอดเวลา
สามารถโทรฯ มาปรึกษางานที่ทำอยู่ได้
🔸 เราจะเรียนวันที่ 22-23 กรกฎาคม 2566
(เป็นวันเสาร์ ่และอาทิตย์)
🔸 คอร์สนี้ต้องใช้เวลาเรียน 2 วันเต็ม ๆ
👉 ติดต่อสอบถามเนื้อหาเพิ่มเติม หรือสมัครได้ที่ลิงค์นี้ m.me/excelbypichart หรือ โทร. 099-084-2562
----- วันนี้ได้โค้ด แบบนี้ครับ -----
Sub VlookupFromOtherWb_2()
Dim i As Long
Dim MySourceWb As Workbook, MySourceSh As Worksheet, MySourceRng As Range
Set MySourceWb = Workbooks.Open(sh01_MainSh.Range("L1").Value)
Set MySourceSh = MySourceWb.Sheets(1)
Set MySourceRng = MySourceSh.Range("A1:H" & MySourceSh.Range("A" & Rows.Count).End(xlUp).Row)
For i = 2 To sh01_MainSh.Range("A" & Rows.Count).End(xlUp).Row
On Error GoTo trapNotFound
sh01_MainSh.Range("E" & i).Value = WorksheetFunction.VLookup(sh01_MainSh.Range("A" & i).Value, MySourceRng, 5, 0)
sh01_MainSh.Range("F" & i).Value = WorksheetFunction.VLookup(sh01_MainSh.Range("A" & i).Value, MySourceRng, 6, 0)
sh01_MainSh.Range("G" & i).Value = WorksheetFunction.VLookup(sh01_MainSh.Range("A" & i).Value, MySourceRng, 7, 0)
sh01_MainSh.Range("H" & i).Value = WorksheetFunction.VLookup(sh01_MainSh.Range("A" & i).Value, MySourceRng, 8, 0)
Next i
MySourceWb.Close
MsgBox "F I N I S H ! ! !"
Exit Sub
'*******************************************
trapNotFound:
sh01_MainSh.Range("E" & i).Value = "Not Found"
sh01_MainSh.Range("F" & i).Value = "Not Found"
sh01_MainSh.Range("G" & i).Value = "Not Found"
sh01_MainSh.Range("H" & i).Value = "Not Found"
Resume Next
End Sub
ขอบคุณอ.ชาติค่ะ
ขอบคุณมากครับ อธิบายละเอียดดีครับ
ขอบคุณครับสำหรับ feedback ดี ๆ ครับ ❤️
มาดูย้อนหลัง แล้วนำไปใช้กับงานลดเวลาได้เยอะเลยค่ะ ขอบคุณสำหรับเกร็ดความรู้ของ VBA มากๆเลยค่ะ
สอบถามค่ะ
ไฟล์ที่เราตั้งไว้ สามารถตั้งไว้ที่ Drive ส่วนกลางได้ไหมคะ เพราะข้อมูลหลักที่เราจะ Vlookup เป็นของเพื่อนทำ เราแค่ต้องการข้อมูลของเพื่อนเพื่อมาทำงานต่อ
เยี่ยมเลยครับ
แปลว่าต้องชอบใช้ vba แน่ ๆ เลย อย่าลืมตามไปดูคลิป vba อื่น ๆ นะครับ มีอีกหลายคลิปเลย vba ช่วยเพิ่มประสิทธิภาพและประสิทธิผลให้งานได้มากมายเลยครับ
อย่าลืมแชร์ให้คนอื่นได้เรียนรู้ด้วยนะครับ ร่วมกันสร้างสังคมแห่งการแบ่งปัน ❤️😀
2