snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
Sub Macro2()
Dim rAll As Range, r As Range
Dim rSource As Range
Dim lRow1 As Long, lRow2 As Long
Application.ScreenUpdating = False
Range("AH1:XFD" & Rows.Count).Clear
Range("A12:AG12").Insert shift:=xlDown
Range("A12:AG12").Select
Range("A12") = "Col1"
Range("A12").AutoFill Destination:=Range("A12:AG12"), Type:=xlFillDefault
Range("G:G").Copy Range("AH:AH")
Range("AH:AH").UnMerge
Range("AH:AH").RemoveDuplicates Columns:=1, Header:=xlYes
Range("AH1:AH13").Insert shift:=xlDown
With ActiveSheet
Set rAll = .Range("AH18", .Range("AH" & Rows.Count).End(xlUp))
Set rSource = .Range("A12", .Range("A" & Rows.Count).End(xlUp)).Resize(, 33)
End With
For Each r In rAll
Range("AH12").Formula = "=G13=" & r
With ActiveSheet
If .Range("AI1") = "" Then
lRow = 1
Else
lRow = .Range("AI" & Rows.Count).End(xlUp).Row + 5 'Change 5 to the value what you want
End If
.Range("A1:AG11").Copy .Range("AI" & lRow).Resize(11, 33)
lRow2 = .Range("AI" & Rows.Count).End(xlUp).Row + 1
rSource.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
.Range("AH11:AH12"), CopyToRange:=.Range("AI" & lRow2)
.Range("AI" & lRow2).Resize(, 33).Delete shift:=xlUp
End With
Next r
Range("AH:AH").Clear
Range("A12:AG12").Delete shift:=xlUp
Application.ScreenUpdating = True
End Sub
Sub Macro2()
Application.ScreenUpdating = False
Range("A1:AG11").Select
Selection.Copy
Range("AI1:BO1").Select
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Dim rAll As Range, r As Range
Dim rSource As Range
Dim lRow1 As Long, lRow2 As Long
Dim header As Range
Range("AH1:XFD" & Rows.Count).Clear
Range("A12:AG12").Insert shift:=xlDown
Range("A12:AG12").Select
Range("A12") = "Col1"
Range("A12").AutoFill Destination:=Range("A12:AG12"), Type:=xlFillDefault
Range("G:G").Copy Range("AH:AH")
Range("AH:AH").UnMerge
Range("AH:AH").RemoveDuplicates Columns:=1, header:=xlYes
Range("AH1:AH13").Insert shift:=xlDown
With ActiveSheet
Set Signature = Sheets("name").Range("H2:AN3")
Set rAll = .Range("AH18", .Range("AH" & Rows.Count).End(xlUp))
Set rSource = .Range("A12", .Range("A" & Rows.Count).End(xlUp)).Resize(, 33)
End With
For Each r In rAll
Range("AH12").Formula = "=G13=" & r
With ActiveSheet
If .Range("AI1") = "" Then
lRow = 1
Else
lRow = .Range("AI" & Rows.Count).End(xlUp).Row + 10 'Change 5 to the value what you want
End If
.Range("A1:AG11").Copy .Range("AI" & lRow).Resize(11, 33)
lRow2 = .Range("AI" & Rows.Count).End(xlUp).Row + 1
rSource.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
.Range("AH11:AH12"), CopyToRange:=.Range("AI" & lRow2)
.Range("AI" & lRow).Resize(11, 33) = .Range("AI" & lRow).Resize(11, 33).Value 'Add this line
.Range("AI" & lRow2).Resize(, 33).Delete shift:=xlUp
End With
targetRow = Range("AI" & Rows.Count).End(xlUp).Row + 10
Sheets("List").Range("BL" & targetRow + 7).FormulaR1C1 = "=VLOOKUP(R[5]C[-23],name,2,0)"
Signature.Copy
Sheets("List").Range("AI" & Rows.Count).End(xlUp).Offset(2, 0).PasteSpecial xlPasteAll
Next r
Range("AH:AH").Clear
Range("A12:AG12").Delete shift:=xlUp
Range("A1:AG11").Select
Selection.Copy
Range("AI1:BO1").Select
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("AI1:BO1").Select
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub