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

อยากให้บอกถึงปัญหาว่า ต้องการให้ทำอะไรที่ชีทไหน เซลล์ไหนครับ จะได้แทนสูตรได้รวดเร็วครับ
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

ลองปรับโค๊ดตามนี้ครับ
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
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 แล้วมันมาไม่ครบ
มันมาเฉพาะของเดิม

ลองดู 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