Potrzebuję obcinać liczbę miejsc dziesiętnych mojej podwójnej wartości do wyświetlenia w polu tekstowym. Jak można to osiągnąć dzięki vba?Obcięcie Double z VBA w Excelu
Odpowiedz
Można użyć ROUND
dla FORMAT
w VBA
Na przykład, aby pokazać 2 miejsca dziesiętne
Dval = 1.56789
Debug.Print Round(dVal,2)
Debug.Print Format(dVal,"0.00")
Note: Powyższa dadzą Ci 1.57
. Więc jeśli szukasz 1.56
następnie można przechowywać Dval na sznurku, a następnie zrobić to
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
Jeśli chcesz rundzie wartość, można skorzystać z funkcji round (ale należy pamiętać, że VBA użytkownika Funkcja Round używa zaokrąglania Bankera, znanego również jako round-to-even, gdzie będzie zaokrąglać o 5 w górę lub w dół, aby zaokrąglić za pomocą tradycyjnego zaokrąglania, użyj formatu).
Jeśli chcesz skróconej wartość bez zaokrąglenia, to nie ma potrzeby korzystania z ciągów jak w przyjętym odpowiedź - wystarczy użyć matematyki:
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
Daje „2,34”.
Można użyć funkcji Int(). Debug.print Int(1.99543)
Albo lepiej:
Public Function Trunc(ByVal value As Double, ByVal num As Integer) As Double
Trunc = Int(value * (10^num))/(10^num)
End Function
Więc można użyć Trunc(1.99543, 4)
==>result: 1.9954
tak zabawne historie. Miałem kłopoty z szybką konwersją VB. Chcę po prostu skrócić podwójne do liczby całkowitej.
value = Int(83.768)
value == 83
Wspaniale, coś w VB zadziałało.
Ups, zapomniałem, że nie działa z liczbami ujemnymi
value = Int(-83.768)
value == -84
... tak, że po prostu się stało. VB używa zaokrąglania Bankera.
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
Jeśli chcesz konkretnych miejsc po przecinku, co zrobić Makah nie tylko z ABS wokół wartości tak Int może obciąć poprawnie.
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. Obsługa błędów VBA nie działa w Excelu
- 2. Uzyskaj pierwszy zakres kolumn z zakresu w Excelu VBA
- 3. Rączka Obiekt JSON w odpowiedzi XMLHttp w Excelu Kod VBA
- 4. Jak dodać elementy do combobox w formularzu w Excelu VBA?
- 5. Wybieranie niepustych komórek w Excelu za pomocą VBA
- 6. Wyliczanie przypisanych skrótów w Excelu
- 7. Jak udostępnić zmienne VBA Excelu dla wielu makr?
- 8. Pętla w każdym wierszu zakresu w Excelu
- 9. W jaki sposób VBA może łączyć się z bazą danych MySQL w Excelu?
- 10. HTML Obcięcie w Pythonie
- 11. Obcięcie wyjścia w BASH
- 12. UILabel z niestandardowym UIEdgeInsets obcięcie w UITableViewCell
- 13. Zapisywanie JTable w Excelu
- 14. Wyświetlane milisekundy w Excelu
- 15. C#: double [] [] i double [,]
- 16. Zliczanie duplikatów w Excelu
- 17. wskazuje obcięcie w ToolTipStatusLabel automatycznie
- 18. Liczby Wykres w Excelu z ciągami mieszane
- 19. W czystym Excelu, jak odwołać się do kolumny w zakresie (bez VBA)
- 20. Szyny 3 - Obcięcie w kontrolerze?
- 21. Azure DocumentDB Dziesiętne obcięcie
- 22. Obcięcie tekstu wewnątrz div
- 23. Najlepsze praktyki w # C# i Excelu
- 24. Benchmarking VBA Code
- 25. Interpolowanie punktów danych w Excelu
- 26. Policz unikalne wartości w Excelu
- 27. Unicode językowe w edytorze VBA
- 28. W Excelu, jak zaokrąglić do najbliższego numeru fibonacci
- 29. Dlaczego Math.Floor (Double) zwraca wartość typu Double?
- 30. PHPUnit i MySQL obcięcie błędu
Funkcja naprawy była bardzo pomocna w moim przypadku! – carlossierra
Zapomniałem o zaokrągleniu Bankera. +1 pomimo protekcyjnego "po prostu używaj matematyki". Aby wyświetlić tylko liczbę jako żądany OP, jeśli nie zależy ci zbytnio na zaokrąglaniu, Format() jest narzędziem dla zadania i jest prostsze niż Fix() (lub Int(), co jest równoważne Fix() dla liczb dodatnich). Istnieją jednak przypadki, w których zaokrąglanie bankowe powoduje pytania użytkowników i wymaga bardziej złożonej transformacji. – GlennFromIowa