Page 1 of 1

VBA รวมยอดตัวเลข

Posted: Mon Dec 30, 2013 2:41 pm
by yukioh
สวัสดีครับอาจารย์

รบกวนอาจารย์ ช้วยดู code ให้หน่อยครับ
คือ ผมต้องกานที่จะ sum ตัวเลข แต่ไม่รู่จะทำยังไง
เพาะบางที่ จำนวนข้อมูนอาดมากน้่อย แล้วแต่ และ ตอนนี้มันไม่ทำงานครับ

Re: VBA รวมยอดตัวเลข

Posted: Mon Dec 30, 2013 3:05 pm
by snasui
:D ตัวอย่าง Code สำหรับการหาค่า Total ซึ่งเป็นยอดรวมสุดท้ายครับ

Code: Select all

Sub test0()
    Dim rCond As Range
    Dim rCriterea As String
    Dim rSum As Range
    With Sheets("IA2")
        Set rCond = .Range("A16", Range("A16").End(xlDown).Offset(-1, 0))
        rCriterea = "*(ACCT*"
        Set rSum = rCond.Offset(0, 3)
        .Range("a16").End(xlDown).Offset(0, 3).Value = Application.SumIf( _
            rCond, rCriterea, rSum)
    End With
End Sub

Re: VBA รวมยอดตัวเลข

Posted: Mon Dec 30, 2013 6:41 pm
by yukioh
ผมได้เอา code ของอาจารย์ ใส่ไปแล้วครับ
ปรากดว่า มัน sum ได้แต่ column D อย่างเดียวครับ, column E,F,G,H Etc อื่นฯมันไม่ทำงานครับ
และ ตัว sum มันเป็นตัวเลก ผมอยากให้มันเป็น formula ครับ

รบกวนอาจารย์ ชวยดูให้หน่อยครับ

Re: VBA รวมยอดตัวเลข

Posted: Mon Dec 30, 2013 7:18 pm
by snasui
:D ตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

Sub test0()
    Dim rAll As Range, r As Range
    Dim a() As String, i As Integer
    With Sheets("IA2")
        Set rAll = .Range("A16", .Range("A16").End(xlDown).Offset(-1, 0))
        For Each r In rAll
            If InStr(r, "(ACCT") > 0 Then
                ReDim Preserve a(i)
                a(i) = Replace(r.Offset(0, 3).Address, "$", "")
                i = i + 1
            End If
        Next r
        With .Range("a16").End(xlDown).Offset(0, 3)
            .Formula = "=Sum(" & Join(a,",") & ")"
            .Resize(1, 7).FillRight
        End With
    End With
End Sub

Re: VBA รวมยอดตัวเลข

Posted: Mon Dec 30, 2013 9:28 pm
by yukioh
ขอบคุณมากครับ อาจารย์

Re:ขอคำอธิบายครับ

Posted: Tue Dec 31, 2013 10:20 am
by pongpang
ขอคำอธิบาย CODEข้างล่าง ครับ
.Formula = "=Sum(" & Join(a,",") & ")"

Re: VBA รวมยอดตัวเลข

Posted: Tue Dec 31, 2013 10:32 am
by snasui
:D .fomula เป็นการกำหนด Property ให้กับเซลล์เพื่อให้เซลล์นั้นมีสูตรตามที่กำหนด

สูตรที่กำหนดคือ "=Sum(" & Join(a,",") & ")"

Join คือ Funtion ใน VBA ใช้สำหรับเชื่อมสมาชิก Array เข้าด้วยกัน

Join(a,",")เป็นการเชื่อมสมาชิกของ Array a โดยคั่นด้วยเครื่องหมาย ,

Re: VBA รวมยอดตัวเลข

Posted: Tue Dec 31, 2013 7:03 pm
by pongpang
ผมไม่เคยเห็นมาก่อนเลย ขอบคุณมากครับที่อธิบาย