วิธีการรวมกลุ่มข้อมูลจากคอลัมน์ให้เป็นแถว
กระทู้เก่าบอร์ด อ.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 ไม่แน่นอนครับ อยากทราบว่าต้องทำอย่างไรบ้างครับ

ขอบคุณครับ

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 นะครับ
ข้อมูลจะต้องอยู่ในรูปแบบของฐานข้อมูลครับ
จะสามารถรองรับได้ดีครับกรณีที่ข้อมูลไม่มากนักได้ดีครับ
ผมใช้ประจำครับ
3 @R08432
ผมส่ง formular   function ต่างๆที่ใช้ใน Excel ให้แล้วครับ

user:accboard@gmail.com
pass: accgmail
4 @R08434
ตอนแรกคิดว่าจะใช้ sub-query ช่วย แต่พอนำไปสร้างเป็น crosstab query มันไม่ยอมถ้าเป็น sub-query

เลยคิดว่า ถ้าจะทำใน access ก็อาจต้องเพิ่มฟิลด์

5 @R08435
โค้ดที่ทำงาน เริ่มจากดูว่า record ปัจจุบันเป็น บริษัท ใหม่หรือไม่ ถ้าใช่ ก็ให้ใส่ 1 ในฟิลด์ myorder2 แล้วเก็บ ข้อมูลในฟิลด์ myorder เพื่อนำไปเก็บไว้ในฟิลด์ ordertotal

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
อ.สุภาพมาตอบเองเลยหรอครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2312s