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

ช่วยเล่าสิ่งที่ต้องการมาพอสังเขปว่าต้องการจะทำอะไร ต้องการผลลัพธ์เป็นอย่างไร จะได้เข้าถึงปัญหาโดยไวครับ
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

ตัวอย่าง 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

แนบไฟล์ล่าสุดที่ได้นำ 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

ลองเขียนได้เลย ติดตรงไหนค่อยถามกันต่อครับ
Re: สอบถามเกี่ยวกับวิธีเขียนให้สั้นลง
Posted: Mon Jul 16, 2018 11:38 am
by xou
ขอบคุณครับ