ปัดจำนวนเงินให้เป็นหลักร้อย ทำยังไง
กระทู้เก่าบอร์ด อ.Yeadram

 1,447   8
URL.หัวข้อ / URL
ปัดจำนวนเงินให้เป็นหลักร้อย ทำยังไง

ตัวอย่าง
จำนวน 320.00 ให้เป็น 400.00
250.00 ให้เปัน 300.00

8 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R23016
ได้ไหมแบบนี้ ใช้ที่ไหนครับ Query , Form หรือ Report

Function Test01(Num1 As Integer) As String
    Dim A, B, C As Integer
    A = Mid(Num1, 2, 1) 'ตัดหลักสิบมาเช็ค
    B = CInt(Len(CStr(Num1))) - 1 'นับจำนวนหลังหลักแรก
    'Debug.Print B
    If A > 0 Then
            C = Mid(Num1, 1, 1) + 1 'ตัดหลักร้อยมาบวก
               For i = 1 To B 'นับจำนวนเติม 0 ตามค่า B ที่นับได้
                    C = C & "0"
               Next
             Test01 = C 'นำไปใช้งาน
    Else
            Test01 = Num1
    End If
End Function
2 @R23017
คำถาม ตัวอย่างน้อยมาก ไม่มีรายละเอียดเลยนะครับ เช่น ถ้าน้อยกว่า 100 หรือ หลักพัน หมื่น จะปัดอย่างไรครับ
เอาเป็นเท่าที่เห็นตัวอย่างก็สามารถใช้สูตรได้นะครับ

-(Int(-([จำนวนเลข] / 100))) * 100

เขียนฟังก์ชั่นก็ได้ประมาณนี้

Function iRound(iNum As Double) As Double
    iRound = -(Int(-(จำนวนเลข / 100))) * 100
End Function

ปรับใช้ดูครับ
3 @R23018
แก้ไข

Function iRound(iNum As Double) As Double
    iRound = -(Int(-(iNum / 100))) * 100
End Function
4 @R23023
เราจะเอา โค้ด ใส่ที่ไหน ถ้าเราจะใช้งานทั้ง Query , Form , Report
ขอแบบละเอียดหน่อย แล้วจะปรับใช้เอง
ตัวอย่างเพิ่มเติม
1120 ให้เป็น 1200
2010 ให้เป็น 2100
992 ให้เป็น 1000
แบบว่า ให้ ยก ขึ้นอย่างเดียว

                             " ขอบคุณ ที่ช่วยเหลือ "
5 @R23026
((หารด้วย 100 ไม่เอาเศษ) + 1) * 100
เขียนเป็นฟังก์ชั่นในโมดูล
ใช้ได้ทุกที่
6 @R23030
อย่างที่ อ.U&ME บอกครับ ไว้ในโมดูลเขียนแบบนี้

Function iRound(iNum As Double) As Double

    iRound = -(Int(-(iNum / 100))) * 100

End Function

วิธีใช้ก็ iRound([ชื่อฟิดล์ตัวเลขเป้าหมาย])

VBA:
Text1 = iRound(1120) 'Return 1200
Text1 = iRound(2010) 'Return 2100
Text1 = iRound(100) 'Return 100

Query:
Exp1: iRound(1120)

ประมาณนี้ครับ

ปล. หากใช้สูตรนี้ ((หารด้วย 100 ไม่เอาเศษ) + 1) * 100 น่าจะต้องใช้เป็น ((หารด้วย 100 ไม่เอาเศษ) + 0.9999999) * 100 นะครับ อาจารย์ U&ME ไม่งั้น หากใส่ค่าเป็นจำนวนเต็ม เช่น 100 มันจะออกเป็น 200 ใส่ 200 ออกเป็น 300 ประมาณนี้ครับ ถ้าผิดพลาดขออภัยครับ
7 @R23036
ถูกต้องแล้วจ้า
8 @R23052
วิธีหาคำตอบของคุณ TTT

iRound = -(Int(-(iNum / 100))) * 100

เป็นการหาคำตอบโดยใช้คุณสมบัติของ
two's complement Binary System
ได้อย่างชาญฉลาดมากครับ

ใครอยากเขียนโปรแกรมแบบ เก่งลึก แนะนำให้ศึกษาเรื่องนี้ไว้ด้วยก็ดีครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2615s