กระทู้เก่าบอร์ด อ.Yeadram
2,360 6
URL.หัวข้อ /
URL
วิธีการรวมกลุ่มข้อมูลจากคอลัมน์ให้เป็นแถว
ตัวอย่างข้อมูล
company order
ก A
ก B
ก C
ก D
ข E
ข F
ค A
ค E
ค I
ง B
สิ่งที่ต้องการ
company order1 order2 order3 order4 order5 order_total
ก A B C D A,B,C,D
ข E F E,F
ค A E I A,E,I
ง B B
ซึ่ง order ของแต่ละ company ไม่แน่นอนครับ อยากทราบว่าต้องทำอย่างไรบ้างครับ
ขอบคุณครับ
company order
ก A
ก B
ก C
ก D
ข E
ข F
ค A
ค E
ค I
ง B
สิ่งที่ต้องการ
company order1 order2 order3 order4 order5 order_total
ก A B C D A,B,C,D
ข E F E,F
ค A E I A,E,I
ง B B
ซึ่ง order ของแต่ละ company ไม่แน่นอนครับ อยากทราบว่าต้องทำอย่างไรบ้างครับ
ขอบคุณครับ
6 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R08413
ผมว่าง่ายที่สุดคือเขียนไปออก Excel ครับ ลองค้นหาด้วยคำว่า Excel.Application ดูครับ
2 @R08415
สวัสดีครับ คุณ BB
ใช่ครับตามที่อาจารย์ สันติสุขแนะนำครับ
ลองศึกษา Pivot Table ดูนะครับ
ที่ Menu--> Data--Pivot Table นะครับ
ข้อมูลจะต้องอยู่ในรูปแบบของฐานข้อมูลครับ
จะสามารถรองรับได้ดีครับกรณีที่ข้อมูลไม่มากนักได้ดีครับ
ผมใช้ประจำครับ
ใช่ครับตามที่อาจารย์ สันติสุขแนะนำครับ
ลองศึกษา Pivot Table ดูนะครับ
ที่ Menu--> Data--Pivot Table นะครับ
ข้อมูลจะต้องอยู่ในรูปแบบของฐานข้อมูลครับ
จะสามารถรองรับได้ดีครับกรณีที่ข้อมูลไม่มากนักได้ดีครับ
ผมใช้ประจำครับ
3 @R08432
ผมส่ง formular function ต่างๆที่ใช้ใน Excel ให้แล้วครับ
user:accboard@gmail.com
pass: accgmail
user:accboard@gmail.com
pass: accgmail
4 @R08434
ตอนแรกคิดว่าจะใช้ sub-query ช่วย แต่พอนำไปสร้างเป็น crosstab query มันไม่ยอมถ้าเป็น sub-query
เลยคิดว่า ถ้าจะทำใน access ก็อาจต้องเพิ่มฟิลด์
เลยคิดว่า ถ้าจะทำใน access ก็อาจต้องเพิ่มฟิลด์
5 @R08435
โค้ดที่ทำงาน เริ่มจากดูว่า record ปัจจุบันเป็น บริษัท ใหม่หรือไม่ ถ้าใช่ ก็ให้ใส่ 1 ในฟิลด์ myorder2 แล้วเก็บ ข้อมูลในฟิลด์ myorder เพื่อนำไปเก็บไว้ในฟิลด์ ordertotal
แล้วก็สร้าง crosstab ดังรูป
ลองดูครับ
Sub subAddNo()
Dim rst As Object, strComp1 As String, strComp2 As String
Dim strSQL As String, strOrderTotal As String, intX As Integer
strSQL = "select company, myorder, myorder2, ordertotal from table1"
Set rst = CurrentDb.OpenRecordset(strSQL)
strComp1 = ""
If Not rst.EOF Then
Do While Not rst.EOF
strComp2 = rst("company")
If strComp2 <> strComp1 Then
intX = 1
rst.Edit
rst("myorder2") = intX
rst.Update
If strComp1 <> "" Then
If strOrderTotal <> "" Then
strOrderTotal = Trim(strOrderTotal)
strOrderTotal = Left(strOrderTotal, Len(strOrderTotal) - 1)
End If
CurrentDb.Execute "update table1 set ordertotal='" & strOrderTotal & "' where company='" & strComp1 & "' and myorder2=1"
End If
Debug.Print strOrderTotal
strOrderTotal = rst("myorder") & ", "
Else
intX = intX + 1
rst.Edit
rst("myorder2") = intX
rst.Update
strOrderTotal = strOrderTotal & rst("myorder") & ", "
End If
strComp1 = strComp2
rst.MoveNext
Loop
End If
If strComp1 <> "" Then
If strOrderTotal <> "" Then
strOrderTotal = Trim(strOrderTotal)
strOrderTotal = Left(strOrderTotal, Len(strOrderTotal) - 1)
End If
CurrentDb.Execute "update table1 set ordertotal='" & strOrderTotal & "' where company='" & strComp1 & "' and myorder2=1"
End If
rst.Close
Set rst = Nothing
End Sub
แล้วก็สร้าง crosstab ดังรูป
ลองดูครับ
6 @R08441
อ.สุภาพมาตอบเองเลยหรอครับ
Time: 0.2312s