:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

VBA การ sum สะสมแต่ค่าsumต้องไม่เกินค่าที่กำหนด แบบมีเงื่อนไข

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
sooksun2009
Member
Member
Posts: 172
Joined: Fri Sep 18, 2015 3:21 pm
Excel Ver: 2013,2016

VBA การ sum สะสมแต่ค่าsumต้องไม่เกินค่าที่กำหนด แบบมีเงื่อนไข

#1

Post by sooksun2009 »

รบกวนท่านอาจารย์ด้วยครับ ใน code vba ผมต้อง sum colume J แล้วแสดงที่ colume K โดยที่ ผลการ sum ต้องไม่เกิน ค่า cell K3 และมีเงื่นไขว่า colume B,C และ D เท่ากับข้อมูลใน cell นั้นๆ
รบกวนท่านอาจารย์ด้วยครับ ขอบคุณครับ

Code: Select all

Function EndRow(S As Object, C As String) As Long
    EndRow = S.Range(C & Rows.Count).End(xlUp).Row
End Function

Sub Caljobtime()
For A = 6 To Module1.EndRow(Sheet6, "B")
If Sheet6.Range("B" & A).Value = Sheet6.Range("B" & A).Value And Sheet6.Range("C" & A).Value = Sheet6.Range("C" & A).Value And Sheet6.Range("D" & A).Value = "D1" Then

                        If Sheet6.Range("J" & A + 1).Value + Sheet6.Range("J" & A + 1).Value > Sheet6.Range("$K$3").Value Then
                        Sheet6.Range("K" & A).Value = ""
                        Else
                        Sheet6.Range("K" & A).Value = Sheet6.Range("J" & A).Value
                        End If


ElseIf Sheet6.Range("B" & A).Value = Sheet6.Range("B" & A).Value And Sheet6.Range("C" & A).Value = Sheet6.Range("C" & A).Value And Sheet6.Range("D" & A).Value = "D1" Then

                        If Sheet6.Range("J" & A + 1).Value + Sheet6.Range("J" & A + 1).Value < Sheet6.Range("$K$3").Value And Sheet6.Range("J" & A + 1).Value + Sheet6.Range("J" & A + 1).Value > Sheet6.Range("$L$3").Value Then
                        Sheet6.Range("L" & A).Value = ""
                        Else
                        Sheet6.Range("L" & A).Value = Sheet6.Range("J" & A).Value
                        End If

End If

            Next A


End Sub
sooksun2009
Member
Member
Posts: 172
Joined: Fri Sep 18, 2015 3:21 pm
Excel Ver: 2013,2016

Re: VBA การ sum สะสมแต่ค่าsumต้องไม่เกินค่าที่กำหนด แบบมีเงื่อนไข

#2

Post by sooksun2009 »

ไฟล์แนบ
You do not have the required permissions to view the files attached to this post.
sooksun2009
Member
Member
Posts: 172
Joined: Fri Sep 18, 2015 3:21 pm
Excel Ver: 2013,2016

Re: VBA การ sum สะสมแต่ค่าsumต้องไม่เกินค่าที่กำหนด แบบมีเงื่อนไข

#3

Post by sooksun2009 »

sooksun2009 wrote: Mon Jan 11, 2021 11:53 am ไฟล์แนบ

Code: Select all

Function EndRow(S As Object, C As String) As Long
    EndRow = S.Range(C & Rows.Count).End(xlUp).Row
End Function

Sub Caljobtime()
For A = 6 To Module1.EndRow(Sheet1, "B")
If Sheet1.Range("B" & A).Value = Sheet1.Range("B" & A).Value And Sheet1.Range("C" & A).Value = Sheet1.Range("C" & A).Value And Sheet1.Range("D" & A).Value = "D1" Then

                        If Sheet1.Range("J" & A + 1).Value + Sheet1.Range("J" & A + 1).Value > Sheet1.Range("$K$3").Value Then
                        Sheet1.Range("K" & A).Value = ""
                        Else
                        Sheet1.Range("K" & A).Value = Sheet1.Range("J" & A).Value
                        End If


ElseIf Sheet1.Range("B" & A).Value = Sheet1.Range("B" & A).Value And Sheet1.Range("C" & A).Value = Sheet1.Range("C" & A).Value And Sheet1.Range("D" & A).Value = "D1" Then

                        If Sheet1.Range("J" & A + 1).Value + Sheet1.Range("J" & A + 1).Value < Sheet1.Range("$K$3").Value And Sheet1.Range("J" & A + 1).Value + Sheet1.Range("J" & A + 1).Value > Sheet1.Range("$L$3").Value Then
                        Sheet1.Range("L" & A).Value = ""
                        Else
                        Sheet1.Range("L" & A).Value = Sheet1.Range("J" & A).Value
                        End If

End If

            Next A
อันแรกผิด ใช้อันนี้ครับ
You do not have the required permissions to view the files attached to this post.
sooksun2009
Member
Member
Posts: 172
Joined: Fri Sep 18, 2015 3:21 pm
Excel Ver: 2013,2016

Re: VBA การ sum สะสมแต่ค่าsumต้องไม่เกินค่าที่กำหนด แบบมีเงื่อนไข

#4

Post by sooksun2009 »

ไม่มีใครช่วยได้หรอ
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: VBA การ sum สะสมแต่ค่าsumต้องไม่เกินค่าที่กำหนด แบบมีเงื่อนไข

#5

Post by snasui »

:D อ่านคำอธิบายแล้วไม่เข้าใจครับ

ช่วยยกตัวอย่างคำตอบที่ถูกต้องมาสัก 2-3 เซลล์แล้วอธิบายว่าค่านั้น ๆ ได้มาด้วยวิธีการใด เผื่อพอจะช่วยได้ครับ
sooksun2009
Member
Member
Posts: 172
Joined: Fri Sep 18, 2015 3:21 pm
Excel Ver: 2013,2016

Re: VBA การ sum สะสมแต่ค่าsumต้องไม่เกินค่าที่กำหนด แบบมีเงื่อนไข

#6

Post by sooksun2009 »

snasui wrote: Thu Jan 14, 2021 8:58 pm :D อ่านคำอธิบายแล้วไม่เข้าใจครับ

ช่วยยกตัวอย่างคำตอบที่ถูกต้องมาสัก 2-3 เซลล์แล้วอธิบายว่าค่านั้น ๆ ได้มาด้วยวิธีการใด เผื่อพอจะช่วยได้ครับ
ตามcode บวกได้แล้วครับแต่เกิน460ไม่แสดงค่าที่columKImage ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: VBA การ sum สะสมแต่ค่าsumต้องไม่เกินค่าที่กำหนด แบบมีเงื่อนไข

#7

Post by snasui »

:D เท่าที่อ่านในกล่องคำอธิบายไมพบว่าเป็นการบวกแบบสะสมที่กล่าวถึง ช่วยยกตัวอย่างให้สอดคล้องกับคำว่า "สะสม" ด้วยครับ
sooksun2009
Member
Member
Posts: 172
Joined: Fri Sep 18, 2015 3:21 pm
Excel Ver: 2013,2016

Re: VBA การ sum สะสมแต่ค่าsumต้องไม่เกินค่าที่กำหนด แบบมีเงื่อนไข

#8

Post by sooksun2009 »

snasui wrote: Thu Jan 14, 2021 9:41 pm :D เท่าที่อ่านในกล่องคำอธิบายไมพบว่าเป็นการบวกแบบสะสมที่กล่าวถึง ช่วยยกตัวอย่างให้สอดคล้องกับคำว่า "สะสม" ด้วยครับ
คือใน colum j บวกแล้วกันถ้าไม่เกิน 460 ให้แสดงค่า cell ที่colum k อันนี้และที่ต้องการ แต่ยังทำไม่ได้ครับ ขอบคุณครับ รบกวน อาจารย์ด้วยครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: VBA การ sum สะสมแต่ค่าsumต้องไม่เกินค่าที่กำหนด แบบมีเงื่อนไข

#9

Post by snasui »

:D ไม่เข้าใจคำว่าในคอลัมน์ J บวกกัน บวกอะไรกับอะไร เท่าที่ดูเหมือนเป็นการเอาค่าในเซลล์มาคูณด้วย 2 หรือที่เรียกว่าบวกด้วยค่าเดิม เช่นนั้นหรือไม่ แล้วคำว่า "สะสม" มาจากไหน กรุณาอธิบายมาให้เข้าใจครับ
sooksun2009
Member
Member
Posts: 172
Joined: Fri Sep 18, 2015 3:21 pm
Excel Ver: 2013,2016

Re: VBA การ sum สะสมแต่ค่าsumต้องไม่เกินค่าที่กำหนด แบบมีเงื่อนไข

#10

Post by sooksun2009 »

snasui wrote: Thu Jan 14, 2021 10:08 pm :D ไม่เข้าใจคำว่าในคอลัมน์ J บวกกัน บวกอะไรกับอะไร เท่าที่ดูเหมือนเป็นการเอาค่าในเซลล์มาคูณด้วย 2 หรือที่เรียกว่าบวกด้วยค่าเดิม เช่นนั้นหรือไม่ แล้วคำว่า "สะสม" มาจากไหน กรุณาอธิบายมาให้เข้าใจครับ
ความต้องการตามสูตรคำนวณไฟล์แนบครับ แต่อยากได้เป็น vba เพราะข้อมูลเยอะครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: VBA การ sum สะสมแต่ค่าsumต้องไม่เกินค่าที่กำหนด แบบมีเงื่อนไข

#11

Post by snasui »

:D ตัวอย่าง Code ครับ

Code: Select all

Sub CalJobTime1()
    Dim l As Long, x As Double
    With Worksheets("Sheet1")
        For l = 6 To .Range("b" & .Rows.Count).End(xlUp).Row
            If .Range("d" & l).Value = "D1" Then
                x = Application.SumIfs(.Range("j6:j" & l), .Range("b6:b" & l), _
                    .Range("b" & l), .Range("c6:c" & l), .Range("c" & l), _
                    .Range("d6:d" & l), .Range("d" & l))
                If x > 460 Then
                    .Range("k" & l).Value = ""
                Else
                    .Range("k" & l).Value = .Range("j" & l).Value
                End If
            Else
                .Range("k" & l).Value = 0
            End If
        Next l
    End With
End Sub
sooksun2009
Member
Member
Posts: 172
Joined: Fri Sep 18, 2015 3:21 pm
Excel Ver: 2013,2016

Re: VBA การ sum สะสมแต่ค่าsumต้องไม่เกินค่าที่กำหนด แบบมีเงื่อนไข

#12

Post by sooksun2009 »

snasui wrote: Thu Jan 14, 2021 11:37 pm :D ตัวอย่าง Code ครับ

Code: Select all

Sub CalJobTime1()
    Dim l As Long, x As Double
    With Worksheets("Sheet1")
        For l = 6 To .Range("b" & .Rows.Count).End(xlUp).Row
            If .Range("d" & l).Value = "D1" Then
                x = Application.SumIfs(.Range("j6:j" & l), .Range("b6:b" & l), _
                    .Range("b" & l), .Range("c6:c" & l), .Range("c" & l), _
                    .Range("d6:d" & l), .Range("d" & l))
                If x > 460 Then
                    .Range("k" & l).Value = ""
                Else
                    .Range("k" & l).Value = .Range("j" & l).Value
                End If
            Else
                .Range("k" & l).Value = 0
            End If
        Next l
    End With
End Sub
ได้แล้วครับ ขอบคุณครับ
Post Reply