รบกวนแก้ไข Code ในการดึงข้อมูลข้าม Sheet ให้หน่อยครับ
Posted: Tue Feb 21, 2017 10:45 am
เรียน พี่ๆทุกท่านครับ
คือว่าผมต้องทำการจับคู่ข้อมูล "เลขที่สินค้า" กับ "เลขที่ใบจ่าย" ในแต่ละเดือน
โดยประกอบด้วยข้อมูลดังนี้ครับ
Sheet1 : PI - จะเก็บข้อมูล "เลขที่สินค้า" ที่จับคู่กับ "เลขที่ใบจ่าย" (ข้อมูลนี้ได้มีทีหลัง)
Sheet2 : Jan - จะเก็บข้อมูลงานรายเดือน ซึ่งตอนแรกจะมีแต่ข้อมูล "เลขที่สินค้า"
แต่ปัญหาคือใน Sheet2 :Jan - บาง Cell นั้นจะมี เลขที่สินค้า 2 ชุด(ชุดละ 9 ตัวอักษร)
ผมจึงต้องดึงข้อมูลทีละ9 ตัวก่อน แล้วนำ "เลขที่สินค้า" ที่ได้ไปเช็ค กับ
Sheet 1: PI ว่า "เลขที่ใบจ่าย" อะไร แล้วนำกลับมาใส่ Sheet 2
ผมเขียน Code ด้งนี้ครับ แต่ Error ครับ
คือว่าผมต้องทำการจับคู่ข้อมูล "เลขที่สินค้า" กับ "เลขที่ใบจ่าย" ในแต่ละเดือน
โดยประกอบด้วยข้อมูลดังนี้ครับ
Sheet1 : PI - จะเก็บข้อมูล "เลขที่สินค้า" ที่จับคู่กับ "เลขที่ใบจ่าย" (ข้อมูลนี้ได้มีทีหลัง)
Sheet2 : Jan - จะเก็บข้อมูลงานรายเดือน ซึ่งตอนแรกจะมีแต่ข้อมูล "เลขที่สินค้า"
แต่ปัญหาคือใน Sheet2 :Jan - บาง Cell นั้นจะมี เลขที่สินค้า 2 ชุด(ชุดละ 9 ตัวอักษร)
ผมจึงต้องดึงข้อมูลทีละ9 ตัวก่อน แล้วนำ "เลขที่สินค้า" ที่ได้ไปเช็ค กับ
Sheet 1: PI ว่า "เลขที่ใบจ่าย" อะไร แล้วนำกลับมาใส่ Sheet 2
ผมเขียน Code ด้งนี้ครับ แต่ Error ครับ
Code: Select all
Public Sub Upload()
Dim Month As String
Dim Ans, PiNo(100), CelVal As Variant
Dim FirstRow, i, j, k, l As Integer
Month = InputBox("¡ÃسҡÃÍ¡à´×͹", "Input Month (Ex. Jan , Feb, Mar)")
Sheets(Month).Activate
FirstRow = 1
i = 1
k = 100
While k > 0
k = k - 1 'k = 100-1 = 99
i = i + 1 ' i = 1 + 1 = 2
CelVal = Cells(FirstRow + i, 2).Value ' CelVal = Cells(1+2,2).value
If CelVal <> 0 Then ' 410253817 <> 0
' Reset k while have data row
k = 100
j = 0
' Create each PiNo
j = j + 1 ' j = 0+1 = 1
PiNo(j) = "" 'PiNo(1) = ""
For l = 1 To Len(CelVal) 'For l = 1 To 9
If Asc(Mid(CelVal, l, 1)) <> 10 And Asc(Mid(CelVal, l, 1)) <> 32 Then ' if 4<>10 And 4<>40 then
PiNo(j) = PiNo(j) & Mid(CelVal, l, 1) 'PiNo(1) = "" & 4
Else
j = j + 1
End If
Next l
Ans = ""
For l = 1 To j
Ans = Ans & WorksheetFunction.VLookup(Val(PiNo(l)), Worksheets("PI").Range("B:C"), 2, 0)
If l < j Then Ans = Ans & Chr(10)
Next l
Cells(FirstRow + i, 3).Value = Ans
End If
Wend
End Sub