จับคู่ข้อมูลระหว่าง Sheet
Posted: Wed Feb 15, 2017 11:12 am
เรียน พี่ๆทุกท่านครับ
คือว่าผมต้องทำการจับคู่ข้อมูล "เลขที่สินค้า" กับ "เลขที่ใบจ่าย" ในแต่ละเดือน โดย "เลขที่ใบจ่าย" นั้น จะได้ข้อมูลมาทีหลังครับ
ซึ่งผมตั้งใจจะทำ Sheet หลักไว้กรอกข้อมูล "เลขที่ใบจ่าย" ที่ได้มาไว้ แล้วค่อยกดปุ่มให้ดึงข้อมูล "เลขที่ใบจ่าย" ไปจับคู่กับ "เลขที่สินค้า" ใน Sheet แต่ละเดือนครับ
โดยประกอบด้วยข้อมูลดังนี้ครับ
Sheet1 : PI - จะเก็บข้อมูล "เลขที่สินค้า" ที่จับคู่กับ "เลขที่ใบจ่าย" (ข้อมูลนี้ได้มีทีหลัง)
Sheet2 : Jan - จะเก็บข้อมูลงานรายเดือน ซึ่งตอนแรกจะมีแต่ข้อมูล "เลขที่สินค้า"
แต่ปัญหาคือใน Sheet2 :Jan - บาง Cell นั้นจะมี เลขที่สินค้า 2 ชุด(ชุดละ 9 ตัวอักษร)
ผมจึงต้องดึงข้อมูลทีละ9 ตัวก่อน แล้วนำ "เลขที่สินค้า" ที่ได้ไปเช็ค กับ Sheet 1: PI ว่า "เลขที่ใบจ่าย" อะไร แล้วนำกลับมาใส่ Sheet 2
ผมเขียน Code ด้งนี้ครับ แต่ Error ครับ
คือว่าผมต้องทำการจับคู่ข้อมูล "เลขที่สินค้า" กับ "เลขที่ใบจ่าย" ในแต่ละเดือน โดย "เลขที่ใบจ่าย" นั้น จะได้ข้อมูลมาทีหลังครับ
ซึ่งผมตั้งใจจะทำ Sheet หลักไว้กรอกข้อมูล "เลขที่ใบจ่าย" ที่ได้มาไว้ แล้วค่อยกดปุ่มให้ดึงข้อมูล "เลขที่ใบจ่าย" ไปจับคู่กับ "เลขที่สินค้า" ใน Sheet แต่ละเดือนครับ
โดยประกอบด้วยข้อมูลดังนี้ครับ
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 PiNo1, PiNo2 As Variant
Dim i As Integer
Month = InputBox("Input Month", "Input Month (Ex. Jan , Feb, Mar)")
Sheets(Month).Activate
For i = 3 To 5
If Len(Cells(i, 2).Value) > 9 Then
PiNo1 = Left(Cells(i, 2).Value, 9)
PiNo2 = Right(Cells(i, 2).Value, 9)
Else
PiNo1 = Cells(i, 2).Value
End If
Cells(i, 3).Value = Application.WorksheetFunction.VLookup(PiNo1, Worksheets("PI").Range("B3:C21"), 2, 0)
If Cells(i, 3) <> "" Then
Cells(i, 3).Value = Application.WorksheetFunction.VLookup(PiNo1, Worksheets("PI").Range("B3:C21"), 2, 0) & "" & Application.WorksheetFunction.VLookup(PiNo2, Worksheets("PI").Range("B3:C21"), 2, 0)
End If
Next i
End Sub