รบกวนอาจารย์และเพื่อน ๆ ช่วยเรื่องปรับโค้ดค่ะ
ตัวอย่างไฟล์ต้องการใช้โค้ด AdvancedFilterInv ร่วมกับโค้ด SearchMultipleSheets
เมื่อนำโค้ด AdvancedFilterInv ไปใช้ร่วมกับโค้ด SearchMultipleSheets
ที่ SearchMultipleSheets
ติดตรง If r.Offset(0, 1).Value2 = s.Value2 Then โค้ดนี้ค่ะถูกระบายสีเหลืองค่ะ ไม่ทราบควรปรับอย่างไรค่ะ
ซึ่งตอนนี้ทำได้แค่ใช้โค้ด Set s = Sheets("ค้นหา").Range("a4") โค้ดนี้อยู่ใน SearchMultipleSheets
ค่าที่ได้ยังไม่ใช่ที่ต้องการค่ะ
ตัวอย่างที่ต้องการอยู่ในไฟล์แนบชีท "รายงาน" ระบายสีเหลืองไว้ค่ะ
Code: Select all
Sub AdvancedFilterInv()
Sheets("กรองข้อมูล").Range("A1:AD20000").ClearContents
Sheets("Database").Columns("A:AD").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Sheets("ค้นหา").Range("A2:G3"), CopyToRange:=Sheets("กรองข้อมูล").Range("A1"), Unique:=False
Application.Goto reference:="OFFSET(R1C1,COUNTA(C1),0)"
End Sub
และ
Code: Select all
Sub SearchMultipleSheets()
Dim arr(999, 8) As Variant, r As Range
Dim ws As Worksheet, i As Integer, s As Range
With Sheets("รายงาน")
Set s = Sheets("ค้นหา").Range("a4")
.Range("b3").Resize(.UsedRange.Rows.Count, .UsedRange.Columns.Count).ClearContents
End With
For Each ws In Worksheets
If ws.Name = "กรองข้อมูล" Then
With ws
For Each r In .Range("a2", .Range("a" & .Rows.Count).End(xlUp))
If r.Offset(0, 5).Value <> r.Offset(-1, 5).Value Then
If r.Offset(0, 1).Value2 = s.Value2 Then
arr(i, 0) = i
arr(i, 0) = r.Offset(0, 1).Value
arr(i, 1) = r.Offset(0, 5).Value
arr(i, 2) = r.Offset(0, 7).Value
arr(i, 3) = r.Offset(0, 8).Value
arr(i, 5) = r.Offset(0, 24).Value
arr(i, 6) = r.Offset(0, 25).Value
i = i + 1
End If
End If
Next r
End With
End If
Next ws
With Sheets("รายงาน")
If i > 0 Then
.Range("b3").Resize(i, 9).Value = arr
End If
End With
Range("F3:F" & Range("H5000").End(xlUp).Row).Formula = "=IF(H3="""","""",SUM(H3-G3))"
End Sub