Tôi cần phải cắt bớt số lượng chữ số thập phân của giá trị kép của tôi để hiển thị trong hộp văn bản. Làm thế nào để đạt được điều này với vba?Cắt xén đôi với VBA trong excel
Trả lời
Bạn có thể sử dụng ROUND
cho FORMAT
trong VBA
Ví dụ để hiển thị 2 chữ số thập phân
Dval = 1.56789
Debug.Print Round(dVal,2)
Debug.Print Format(dVal,"0.00")
Note: Trên đây sẽ cung cấp cho bạn 1.57
. Vì vậy, nếu bạn đang tìm kiếm 1.56
sau đó bạn có thể lưu trữ các Dval trong một chuỗi và sau đó làm điều này
Dim strVal As String
dVal = 1.56789
strVal = dVal
If InStr(1, strVal, ".") Then
Debug.Print Split(strVal, ".")(0) & "." & Left(Split(strVal, ".")(1), 2)
Else
Debug.Print dVal
End If
Nếu bạn muốn vòng giá trị, sau đó bạn có thể sử dụng chức năng Round (nhưng lưu ý rằng VBA của Chức năng vòng sử dụng làm tròn của ngân hàng, còn được gọi là tròn-to-even, nơi nó sẽ tròn 5 lên hoặc xuống, để làm tròn bằng cách làm tròn truyền thống, sử dụng định dạng).
Nếu bạn muốn truncate giá trị mà không làm tròn, sau đó không có nhu cầu sử dụng chuỗi như trong câu trả lời chấp nhận - chỉ cần sử dụng toán học:
Dim lDecimalPlaces As Long: lDecimalPlaces = 2
Dim dblValue As Double: dblValue = 2.345
Dim lScale = 10^lDecimalPlaces
Dim dblTruncated As Double: dblTruncated = Fix(dblValue * lScale)/lScale
này mang lại "2,34".
Bạn có thể sử dụng hàm Int(). Debug.print Int(1.99543)
Hoặc tốt hơn:
Public Function Trunc(ByVal value As Double, ByVal num As Integer) As Double
Trunc = Int(value * (10^num))/(10^num)
End Function
Vì vậy, bạn có thể sử dụng Trunc(1.99543, 4)
==>result: 1.9954
câu chuyện rất thú vị. Tôi đã rối tung xung quanh với một chức năng chuyển đổi VB nhanh chóng. Tôi chỉ muốn cắt một đôi thành một số nguyên.
value = Int(83.768)
value == 83
Tuyệt vời, điều gì đó trong VB thực sự hiệu quả.
Rất tiếc, tôi quên mất nó không hoạt động với số âm
value = Int(-83.768)
value == -84
... yeah đó vừa xảy ra. VB sử dụng làm tròn ngân hàng.
Public Function Trunc(ByVal value As Double) As Integer
' Truncate by calling Int on the Absolute value then multiply by the sign of the value.
' Int cannot truncate doubles that are negative
Trunc = (Abs(value)/value) * Int(Abs(value))
End Function
Nếu bạn muốn số thập phân cụ thể làm những gì Makah chỉ làm với Abs xung quanh giá trị để Int có thể cắt ngắn chính xác.
Public Function Trunc2(ByVal value As Double, Optional ByVal num As Integer = 1) As Double
' Truncate by calling Int on the Absolute value then multiply by the sign of the value.
' Int cannot truncate doubles that are negative
Dim sign As Integer
sign = Abs(value)/value
Trunc2 = sign * (Int(Abs(value) * (10^num))/(10^num))
End Function
- 1. Cắt ô bằng VBA trong Excel
- 2. cắt xén để SpatialPolygonsDataFrame
- 3. Array trong excel vba
- 4. Cắt xén hình ảnh GWT
- 5. Cắt xén hình ảnh html5
- 6. Cắt xén văn bản trong PHP?
- 7. Cắt xén chương trình trong VS 2008
- 8. Chuỗi VBA Excel VBA
- 9. nhận diện khuôn mặt và cắt xén
- 10. OnClick trong Excel VBA
- 11. Cắt xén hình ảnh như facebook
- 12. Trang cắt xén của tệp .pdf
- 13. Cắt xén hoặc thả và tạo bảng
- 14. CSS/JS để cắt xén hình tròn
- 15. Cắt xén đơn giản bằng kẹp giấy
- 16. Hình ảnh cắt xén phía máy khách
- 17. Kết nối Excel với PostgreSQL qua VBA
- 18. Cắt xén dendrogram trong scipy (phân nhóm theo thứ tự)
- 19. VBA Excel tương đương với một vectơ
- 20. Xem tên trình biên dịch bị cắt xén trong C++
- 21. Hãy so sánh đôi trong vấn đề chính xác VBA
- 22. Excel vba - xlDown
- 23. Excel (2007) VBA - .Formula với dấu ngoặc kép trong đó
- 24. Chọn các ô không trống trong Excel với VBA
- 25. Lọc các mảng 2D trong Excel VBA
- 26. EXcel VBA: Excel Macro để tạo bảng trong PowerPoint
- 27. Thanh tiến trình trong VBA Excel
- 28. Chức năng mảng trong Excel VBA
- 29. Cắt một đôi thành phao trong C
- 30. iframe trên iOS (iPad) vấn đề cắt xén nội dung
Chức năng sửa lỗi rất hữu ích trong trường hợp của tôi! – carlossierra
Tôi đã quên đi việc làm tròn của Ngân hàng. +1 bất chấp sự kết thúc "chỉ cần sử dụng toán học" jab. Để chỉ hiển thị số như OP được yêu cầu, nếu bạn không quan tâm nhiều về làm tròn, Format() là công cụ cho công việc và đơn giản hơn Fix() (hoặc Int(), tương đương với Fix() cho số dương). Tuy nhiên, có những trường hợp làm tròn của ngân hàng sẽ gây ra câu hỏi của người dùng và yêu cầu một sự chuyển đổi phức tạp hơn. – GlennFromIowa