Page 1 of 1

การเขียนCode Vba แสดงผลคล้าย Pivot table

Posted: Sun Jul 15, 2018 11:49 am
by auimsuwan
เรียนท่านอาจารย์ครับ

ตัวอย่างจากภาพ ผมเขียน Code VBA โดยให้อ่านค่าจาก Sheet ที่ชื่อ "ฐานข้อมูล"
และให้แสดงผลในหน้า Sheet ที่ชื่อ "ทดสอบ" โดยผลลัพท์ที่อย่ากได้ อยากได้ค่า
ผลลัพท์ตามภาพที่แนบครับ อยากทราบว่า ผมต้องปรับแก้ Code อย่างไร
จึงจะได้ผลลัพท์ตามที่ต้องการ

ขอบคุณครับผม

Re: การเขียนCode Vba แสดงผลคล้าย Pivot table

Posted: Sun Jul 15, 2018 3:00 pm
by snasui
:D มีวิธีคำนวณอย่างไรเซลล์ K5 จึงมีค่าเป็น 16 ช่วยแจ้งมาด้วยครับ

Re: การเขียนCode Vba แสดงผลคล้าย Pivot table

Posted: Sun Jul 15, 2018 4:16 pm
by auimsuwan
ขอโทษด้วยครับผม คือคําตอบที่อยากได้ อยากได้ผลลัพท์แบบเดียวกับทํา Pivot table
โดยไม่ต้องแสดง แถวของ Grand Total ที่เป็นผลรวมครับ ตามภาพครับผม

Re: การเขียนCode Vba แสดงผลคล้าย Pivot table

Posted: Sun Jul 15, 2018 4:45 pm
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Dim d As Object, a(999, 2) As Variant, i As Integer
Dim rall As Range, r1 As Range, r2 As Range, j As Integer
Set d = CreateObject("Scripting.Dictionary")
With Sheets("ฐานข้อมูล")
    Set rall = .Range("a3", .Range("a" & .Rows.Count).End(xlUp))
    For Each r In rall
        If Not d.exists(r.Value) Then
            d.Add Key:=r.Value, Item:=r.Value
            a(i, 0) = r.Value
            j = 1
            For Each r1 In rall
                If r1.Value = a(i, 0) Then
                    a(i, 1) = j
                    a(i, 2) = a(i, 2) + r1.Offset(0, 1).Value
                    j = j + 1
                End If
            Next r1
            i = i + 1
        End If
    Next r
End With
With Sheets("ทดสอบ")
    .Range("a5").Resize(.UsedRange.Rows.Count, 3).ClearContents
    .Range("a5").Resize(i + 1, 3).Value = a
    With .Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("a5").Resize(i), SortOn:=xlSortOnValues, _
            Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range("a5").Resize(i, 3)
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End With

Re: การเขียนCode Vba แสดงผลคล้าย Pivot table

Posted: Mon Jul 16, 2018 8:25 am
by auimsuwan
ขอบคุณครับผม

Re: การเขียนCode Vba แสดงผลคล้าย Pivot table

Posted: Mon Jul 16, 2018 10:10 am
by eyepop99
ใช้ Countif กับ Sumif
ก็น่าจะได้แล้วนะครับ