Page 2 of 2

Re: Code จากคลิป Search data from multiple sheets ค่ะ

Posted: Sat Aug 19, 2017 12:08 pm
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

If r.Offset(0, 1).Value2 >= s(1).Value2 And r.Offset(0, 1).Value2 <= s(2).Value2 Then
    arr(i, 0) = i + 1
    arr(i, 1) = r.Offset(0, 1).Value
    arr(i, 2) = r.Offset(0, 5).Value
    arr(i, 3) = r.Offset(0, 7).Value
    arr(i, 4) = 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

Re: Code จากคลิป Search data from multiple sheets ค่ะ

Posted: Sun Aug 20, 2017 4:32 pm
by suka
Code ล่าสุดที่อาจารย์ปรับให้สามารถใช้ได้ดีตรงตามต้องการแล้วค่ะ
จากรูปแนบภาพล่างค่ะภาพที่ 2 ที่ชีท "รายงาน" ขยับ "ลำดับที่" มาวางที่คอลัมน์ B ได้รายงานตรงตามต้องการแล้วค่ะ

แต่ยังมีข้อสงสัยขออนุญาตแนบรูปและไฟล์ถามเพิ่มเติมเพื่อจะได้ทำความเข้าใจได้ถูกต้องค่ะ
รูปแนบรูปบนภาพที่ 1 ชีท "รายงาน" ค่ะ "ลำดับที่" หากให้วางค่าที่คอลัมน์ A ควรปรับโค้ดด้านล่างนี้อย่างไรคะ

ขอบคุณอาจารย์มากค่ะ

Code: Select all

Sub SearchMultipleSheets()
    Dim arr(999, 9) As Variant, r As Range
    Dim ws As Worksheet, i As Integer, s As Range
    With Sheets("รายงาน")
        Set s = Sheets("ค้นหา").Range("a4:b4")
        .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
                    If r.Offset(0, 1).Value2 >= s(1).Value2 And r.Offset(0, 1).Value2 <= s(2).Value2 Then
                        arr(i, 0) = i + 1
                        arr(i, 1) = r.Offset(0, 1).Value
                        arr(i, 2) = r.Offset(0, 5).Value
                        arr(i, 3) = r.Offset(0, 7).Value
                        arr(i, 4) = r.Offset(0, 8).Value
                        arr(i, 6) = r.Offset(0, 24).Value
                        arr(i, 7) = 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, 8).Value = arr
        End If
    End With
    Range("g3:g" & Range("i5000").End(xlUp).Row).Formula = "=IF(i3="""","""",SUM(i3-h3))"
    Range("g3:g" & Range("b5000").End(xlUp).Row).Select
    Selection.Copy
    Selection.PasteSpecial xlPasteValues
    Application.CutCopyMode = False
End Sub

Re: Code จากคลิป Search data from multiple sheets ค่ะ

Posted: Sun Aug 20, 2017 5:30 pm
by snasui
:D ควรจะลอง Run Code ทีละ Step โดยการกดแป้น F8 เพื่อดูการทำงานทีละขั้น จะได้ตรวจสอบได้ว่าขั้นตอนใดที่เป็นการวางข้อมูลและวางที่ใด ลองทำดูก่อน หากทำแล้วยังตรวจสอบไม่ได้ค่อยแจ้่งมาอีกรอบ

Re: Code จากคลิป Search data from multiple sheets ค่ะ

Posted: Mon Aug 21, 2017 8:52 am
by suka
:tt: ย้อนมาดูโค้ดอีกรอบเข้าใจแล้วค่ะ เป็นเพราะไม่ได้แก้โด้ดนี้ค่ะ

Code: Select all

With Sheets("รายงาน")
        If i > 0 Then
            .Range("a3").Resize(i, 8).Value = arr
        End If
End With
:thup: ขอบคุณอาจารย์มาก ๆ ค่ะ