EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)Code: Select all
Private Sub Test1_Click()
Dim CCenter As String
Dim rCode, rAll, r, r1 As Range
With Sheets("Existing")
Set rAll = .Range("a:a").SpecialCells(xlCellTypeConstants)
CCenter = .Range("A1")
End With
For Each r In rAll
With Sheets("data")
Set rCode = .Range("e:e").SpecialCells(xlCellTypeConstants)
For Each r1 In rCode
If r1.Value = CCenter Then
r.Offset(3, 1) = r1.Offset(, -4)
End If
Next r1
End With
Next r
End Sub
ปรับโค้ดเป็นlumi wrote: Wed Mar 14, 2018 9:12 am รบกวนสอบถามผู้รู้ค่ะ
พอดีต้องการดึงข้อมูลจาก Sheet "Data" Column A มาวางใน Sheet "Existing" Column B โดยมีเงื่อนไข ว่าข้อมูลใน Column E ที่ Sheet "Data"ต้องตรงกับข้อมูลใน Column A Sheet "Existing" โดยค่าใน Column A Sheet "Existing"จะเปลี่ยนไปตามที่กำหนด
ปัญหาคือตอนนี้ทำแล้วค่าที่ได้วางทับกันที่ Cell เดียวหมดเลยไม่เรียงต่อลงมาด้านล่าง เช่น
ต้องการ
Order
200004479
200004316
200004317
200004318
200004319
200004326
200004017
ผล
Order
200004017
ตัวอย่าง CodeCode: Select all
Private Sub Test1_Click() Dim CCenter As String Dim rCode, rAll, r, r1 As Range With Sheets("Existing") Set rAll = .Range("a:a").SpecialCells(xlCellTypeConstants) CCenter = .Range("A1") End With For Each r In rAll With Sheets("data") Set rCode = .Range("e:e").SpecialCells(xlCellTypeConstants) For Each r1 In rCode If r1.Value = CCenter Then r.Offset(3, 1) = r1.Offset(, -4) End If Next r1 End With Next r End Sub
Code: Select all
Dim CCenter As String
Dim rCode, rAll, r, r1 As Range
With Sheets("Existing")
Set rAll = .Range("a:a").SpecialCells(xlCellTypeConstants)
CCenter = .Range("A1")
End With
For Each r In rAll
With Sheets("data")
Set rCode = .Range("e:e").SpecialCells(xlCellTypeConstants)
For Each r1 In rCode
If r1.Value = CCenter Then
r1.Offset(, -4).Copy
Sheets("Existing").Range("b" & Rows.Count) _
.End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Application.CutCopyMode = False
'r.Offset(3, 1) = r1.Offset(, -4)
End If
Next r1
End With
Next r