กระทู้เก่าบอร์ด อ.Yeadram
1,603 8
URL.หัวข้อ /
URL
ปัดจำนวนเงินให้เป็นหลักร้อย ทำยังไง
ตัวอย่าง
จำนวน 320.00 ให้เป็น 400.00
250.00 ให้เปัน 300.00
จำนวน 320.00 ให้เป็น 400.00
250.00 ให้เปัน 300.00
8 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R23017
คำถาม ตัวอย่างน้อยมาก ไม่มีรายละเอียดเลยนะครับ เช่น ถ้าน้อยกว่า 100 หรือ หลักพัน หมื่น จะปัดอย่างไรครับ
เอาเป็นเท่าที่เห็นตัวอย่างก็สามารถใช้สูตรได้นะครับ
-(Int(-([จำนวนเลข] / 100))) * 100
เขียนฟังก์ชั่นก็ได้ประมาณนี้
Function iRound(iNum As Double) As Double
iRound = -(Int(-(จำนวนเลข / 100))) * 100
End Function
ปรับใช้ดูครับ
เอาเป็นเท่าที่เห็นตัวอย่างก็สามารถใช้สูตรได้นะครับ
-(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
แบบว่า ให้ ยก ขึ้นอย่างเดียว
" ขอบคุณ ที่ช่วยเหลือ "
ขอแบบละเอียดหน่อย แล้วจะปรับใช้เอง
ตัวอย่างเพิ่มเติม
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 ประมาณนี้ครับ ถ้าผิดพลาดขออภัยครับ
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
ได้อย่างชาญฉลาดมากครับ
ใครอยากเขียนโปรแกรมแบบ เก่งลึก แนะนำให้ศึกษาเรื่องนี้ไว้ด้วยก็ดีครับ
iRound = -(Int(-(iNum / 100))) * 100
เป็นการหาคำตอบโดยใช้คุณสมบัติของ
two's complement Binary System
ได้อย่างชาญฉลาดมากครับ
ใครอยากเขียนโปรแกรมแบบ เก่งลึก แนะนำให้ศึกษาเรื่องนี้ไว้ด้วยก็ดีครับ
Time: 0.3136s
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