Page 1 of 1

การทำสรุปรายงานจากฐานข้อมูล

Posted: Thu Aug 16, 2012 11:55 am
by suthchayavee
เรียน ท่านสมาชิกฯ

ผมได้ทดลองทำไฟล์เพื่อเก็บข้อมูล โดยมี 3 sheet หลัก คือ Form, Table Customer, Table Detail
การนี้หากต้องการทำสรุปโดยนำข้อมูลจาก sheet : Table Customer, Table Detail มีรวบรวมไว้ในหน้าเดียว
ดัง sheet : Summary ตามไฟล์แนบ

ท่านสมาชิก พอจะแนะนำวิธีการทำให้ได้ไหมครับ

Re: การทำสรุปรายงานจากฐานข้อมูล

Posted: Thu Aug 16, 2012 12:21 pm
by bank9597
:D อยากให้บอกถึงปัญหาว่า ต้องการให้ทำอะไรที่ชีทไหน เซลล์ไหนครับ จะได้แทนสูตรได้รวดเร็วครับ

Re: การทำสรุปรายงานจากฐานข้อมูล

Posted: Thu Aug 16, 2012 1:03 pm
by suthchayavee
ผมลองทำใน sheet:Trial แต่ทำแบบบันทึก macro ซึ่ง code ยาวมากๆ
อีกทั้งเมื่อฐานข้อมูลเปลี่ยนแปลงไปจะทำให้การ Gen Report มีปัญหา

ทั้งนี้ผมอยากให้เมื่อ Gen Report แล้วข้อมูลถูกดึงออกมาใน Format ที่ต้องการตาม sheet: Expect เลย
โดยไม่ต้องกังวลเมื่อมีการเพิ่ม/ลด/แก้ไข ข้อมูล๔กนำมาจัดอยู่ในรูปแบบที่ต้องการ

Re: การทำสรุปรายงานจากฐานข้อมูล

Posted: Thu Aug 16, 2012 1:37 pm
by bank9597
:D ลองปรับโค๊ดตามนี้ครับ

Code: Select all

Option Explicit
Sub GenReport()
    Dim rSource As Range
        With Sheets("Expect")
        Set rSource = .Range("A2", .Range("M" & Rows.Count).End(xlUp))
    End With
        Sheets("Trial").Range("A2:M100").Clear
        rSource.Copy
        Sheets("Trial").Range("A2").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
End Sub

Re: การทำสรุปรายงานจากฐานข้อมูล

Posted: Thu Aug 16, 2012 3:17 pm
by suthchayavee
ขอบคุณนะครับ
แต่กรณีที่เพิ่มข้อมูลใหม่เรื่อยๆ เวลา GenReport แล้วมันมาไม่ครบ
มันมาเฉพาะของเดิม

Re: การทำสรุปรายงานจากฐานข้อมูล

Posted: Thu Aug 16, 2012 3:40 pm
by bank9597
:D

Code: Select all

Set rSource = .Range("A2", .Range("M" & Rows.Count).End(xlUp))
ยึดที่ชีท Expect คอลัมน์ M ครับ หากข้อมูลในคอลัมน์นี้เพิ่มมาเท่าไหร่ เวลาดึงข้อมูลไปแสดงที่ชีท Trial ก็จะถูกต้องครับ

Re: การทำสรุปรายงานจากฐานข้อมูล

Posted: Thu Aug 16, 2012 6:31 pm
by snasui
suthchayavee wrote:ขอบคุณนะครับ
แต่กรณีที่เพิ่มข้อมูลใหม่เรื่อยๆ เวลา GenReport แล้วมันมาไม่ครบ
มันมาเฉพาะของเดิม
:D ลองดู Code ตามด้านล่าง สำหรับคำว่า รวม และการจัด Format ลองเขียนดูเองก่อน ติดตรงไหนสามารถถามมาได้ครับ

Code: Select all

Sub GenReport02()
    Dim rCus As Range, rDtl As Range
    Dim rc1 As Range, rc2 As Range, rc3 As Range
    Dim rc As Range, rt As Range, rSum As Range
    Dim Lng As Long, iCount As Integer
    With Sheets("Table Customer")
        Set rCode = .Range("A2", .Range("A" & Rows.Count).End(xlUp))
    End With
    For Each rc In rCode
        With Sheets("Table Detail")
            iCount = Application.CountIf(.Range("A2", .Range("A" & Rows.Count).End(xlUp)), rc)
            Lng = Application.Match(rc, .Range("A2", .Range("A" & Rows.Count).End(xlUp)), 0) + 1
            If iCount > 0 Then
                Set rDtl = .Range("B" & Lng, .Range("E" & Lng + iCount - 1))
            End If
        End With
        Set rc1 = rc.Offset(0, 2).Resize(1, 4)
        Set rc2 = rc.Offset(0, 6).Resize(1, 3)
        Set rc3 = rc.Resize(1, 2)
        Set rt = Sheets("Trial").Range("M" & Rows.Count).End(xlUp).Offset(1, -12)
        rc1.Copy: rt.PasteSpecial xlPasteValues
        rc3.Copy: rt.Offset(0, 4).PasteSpecial xlPasteValues
        rc2.Copy: rt.Offset(0, 6).PasteSpecial xlPasteValues
        rDtl.Copy: rt.Offset(0, 9).PasteSpecial xlPasteValues
        Set rSum = rt.Offset(0, 12).Resize(iCount, 1)
        rt.Offset(0, 12).End(xlDown).Offset(1, 0) = Application.Sum(rSum)
    Next rc
End Sub