Page 1 of 1

สอบถามเกี่ยวกับวิธีเขียนให้สั้นลง

Posted: Mon Nov 13, 2017 11:22 am
by xou
มีวิธีไหนที่ดีกว่านี้ไหมครับ ผมรู้สึกว่าถ้าเขียนทั้งหมดมันจะ if else เยอะมากๆ select caseก็จะเยอะมากๆ ผมเลยอยากขอคำแนะนำเกี่ยวกับวิธีที่ง่ายกว่านี้หรือสะดวกกว่านี้หน่อยครับ


แก้ไขเพิ่มเติม ข้อมูลจริงไม่ได้ติดกันแบบนี้นะครับ มันแยกกันมีข้อมูลอื่นคั่นอยู่

Re: สอบถามเกี่ยวกับวิธีเขียนให้สั้นลง

Posted: Mon Nov 13, 2017 7:55 pm
by snasui
:D ช่วยเล่าสิ่งที่ต้องการมาพอสังเขปว่าต้องการจะทำอะไร ต้องการผลลัพธ์เป็นอย่างไร จะได้เข้าถึงปัญหาโดยไวครับ

Re: สอบถามเกี่ยวกับวิธีเขียนให้สั้นลง

Posted: Tue Nov 14, 2017 1:12 am
by xou
คือผมจะหาผลรวมของแต่ละเรท แต่ละช่วง เอามารวมกันเป็นเรทต่อเรท แล้วทีนี้มันมีเยอะครับ

ตั้งแต่ เรท 1-5 6-10 ไปจน 96-100 แล้วผมต้องเขียน if else กับ select case ตลอด ผมเลยอยากรู้มีวิธีเขียนให้สั้นกว่านี้ไหมครับ

Re: สอบถามเกี่ยวกับวิธีเขียนให้สั้นลง

Posted: Tue Nov 14, 2017 6:44 am
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Dim rAll As Range, r As Range
Dim rmn As String, rmx As String
With Sheets("Value")
    Set rAll = .Range("b2", .Range("b" & .Rows.Count).End(xlUp))
    For Each r In rAll
        r.Offset(0, 7).Value = VBA.Left(r.Value, InStr(r.Value, ",") - 1)
    Next r
    For Each r In rAll
        rmn = Split(r.Offset(0, 3).Value, "-")(0)
        rmx = Split(r.Offset(0, 3).Value, "-")(1)
        r.Offset(0, 4).Value = Application.SumIfs(rAll.Offset(0, 1), _
            rAll.Offset(0, 7), ">=" & rmn, rAll.Offset(0, 7), "<=" & rmx)
        r.Offset(0, 5).Value = Application.AverageIfs(rAll.Offset(0, -1), _
            rAll.Offset(0, 7), ">=" & rmn, rAll.Offset(0, 7), "<=" & rmx)
        If IsError(r.Offset(0, 5).Value) Then r.Offset(0, 5).Value = 0
        r.Offset(0, 6).Value = Application.CountIfs( _
            rAll.Offset(0, 7), ">=" & rmn, rAll.Offset(0, 7), "<=" & rmx)
    Next r
    rAll.Offset(0, 7).Resize(, 2).ClearContents
End With

Re: สอบถามเกี่ยวกับวิธีเขียนให้สั้นลง

Posted: Tue Nov 14, 2017 11:04 am
by xou
ผลรวมไม่แสดงครับ แล้วผมลองเพิ่มหรือลบจำนวนข้อมูลดู แล้วerror ตอนนี้กำลังศึกษาcodeอยู่ครับ มือใหม่ ขอคำแนะนำด้วยครับ ขอบคุณครับ

Re: สอบถามเกี่ยวกับวิธีเขียนให้สั้นลง

Posted: Wed Nov 15, 2017 6:02 am
by snasui
:D แนบไฟล์ล่าสุดที่ได้นำ Code นี้ไปใช้ ชี้ให้เห็นว่าผิดพลาดอยางไร ที่ถูกจะต้องได้ค่าเท่าด จะได้ช่วยดูให้ได้ครับ

Re: สอบถามเกี่ยวกับวิธีเขียนให้สั้นลง

Posted: Thu Nov 23, 2017 10:10 am
by xou
ถ้าผมจะหาจำนวนราคาจากการเอาเงิน มา หาร กับจำนวน ผมสามารถใช้ offset(0,4)/offset(0,6) ได้เลยตรงเลยไหมครับ

Re: สอบถามเกี่ยวกับวิธีเขียนให้สั้นลง

Posted: Fri Nov 24, 2017 4:56 pm
by snasui
:D ลองเขียนได้เลย ติดตรงไหนค่อยถามกันต่อครับ

Re: สอบถามเกี่ยวกับวิธีเขียนให้สั้นลง

Posted: Mon Jul 16, 2018 11:38 am
by xou
ขอบคุณครับ