Cách Format giữ nguyên số chữ số thập phân trong VBA

Liên hệ QC

thuyyeu99

Trùm Nhiều Chuyện
Tham gia
6/6/08
Bài viết
1,729
Được thích
874
Các anh chị cho em hỏi trong vba mình có cách nào format số mà giữ nguyên phân số không. Em có dùng Format(number, "#,###.#####") nhưng thể hiện lên LV nhìn nó xấu quá. Ý em là phân số bao nhiêu thì nó tự nhận biết và thể hiện bao nhiêu phân số thôi

Ví dụ

1.2333 = 1.2333
1.5 = 1.5
1.23 = 1.23
100.123 = 1,000.123


Cám ơn các anh chị quan tâm
 
Các anh chị cho em hỏi trong vba mình có cách nào format số mà giữ nguyên phân số không. Em có dùng Format(number, "#,###.#####") nhưng thể hiện lên LV nhìn nó xấu quá. Ý em là phân số bao nhiêu thì nó tự nhận biết và thể hiện bao nhiêu phân số thôi

Ví dụ

1.2333 = 1.2333
1.5 = 1.5
1.23 = 1.23
100.123 = 1,000.123


Cám ơn các anh chị quan tâm
Không hiểu bạn nói hiện lên LV xấu nghĩa là gì. Nhưng tôi thấy format như vậy nó vẫn hiện vừa đúng số chữ số thập phân mà. Nhưng tốt hơn hết bạn nên Format theo kiểu này:
Mã:
"0,###.0#########
 
Upvote 0
Nếu em dùng lệnh đó khi khong có thập phân thì nó thể hiện dấu thập phân. còn khi mà có 1 số thập phân thì nó sẽ thể hiện luôn các số 0 ở phía sau nên nhìn nó kỳ kỳ. Ý em là em muốn có bao nhiêu số thập phân thì nó chỉ hiện bấy nhiêu số thôi
 
Upvote 0
Nếu em dùng lệnh đó khi khong có thập phân thì nó thể hiện dấu thập phân. còn khi mà có 1 số thập phân thì nó sẽ thể hiện luôn các số 0 ở phía sau nên nhìn nó kỳ kỳ. Ý em là em muốn có bao nhiêu số thập phân thì nó chỉ hiện bấy nhiêu số thôi
Vậy thì bạn đừng Format, có sao thì Add vào như vậy thôi
 
Upvote 0
Dạ ý em là chỉ để trang trí cho nó đẹp thôi,
Em dự định tạo riêng 1 cái UDF là tách riêng phần thập phân
ví dụ Tp có 4 số thì Format(number, "#,###.###")
Tp có 5 số thì Format(number, "#,###.#####")
Tp có 2 số thì Format(number, "#,###.##")
 
Upvote 0
Dạ ý em là chỉ để trang trí cho nó đẹp thôi,
Em dự định tạo riêng 1 cái UDF là tách riêng phần thập phân
ví dụ Tp có 4 số thì Format(number, "#,###.###")
Tp có 5 số thì Format(number, "#,###.#####")
Tp có 2 số thì Format(number, "#,###.##")
UDF ấy thế nào? Bạn đưa code lên xem thử
 
Upvote 0
tìm số chữ số thập phân, đại khái là

SsTp = Len(Str(So - Int(So)))

Format là:

"#,###." & String(SsTp, "#")

Tuy vậy, quan niệm về cái đẹp của tôi khác:

LV chắc là Listview?
Trong Listview cũng như trong bất ký bảng biểu nào: dữ liệu số trong 1 cột phải ngay hàng thẳng lối: đơn vị thẳng hàng đơn vị, chục thẳng hàng chục, trăm thẳng hàng trăm, ... dấu thập phân phải thẳng hàng với dấu thập phân.

Nghĩa là, tất cả phải định dạng như nhau với số chữ số thập phân như nhau. Thiếu thì điền 0 vô.
 
Upvote 0
Bạn cứ nghiên cứu kỹ 2 hàm Format và FormatNumber của VB là có thể đáp ứng yêu cầu của bạn. Dùng như vậy, thuận mặt khác là khi chuyển lại dạng số để tính toán cũng đơn giản.
Đúng như Anh Ptm 0412 nói, cách định dạng của bạn nó lổn nhổn như vậy sao trông được. Để dễ nhìn dễ đọc thì các số thập phân nó phải bằng nhau. Dấu chấm phảy nó phải cùng hàng lối mới đươc.
 
Upvote 0
em mới nghĩ ra cái này chắc đáp ứng được nhu cầu của em

Function fym(so)
If Abs(so) - Int(Abs(so)) = 0 Then
fym = Format(so, "#,###")
Else
fym = Format(so, "#,###.#####")
End If
End Function

Cám ơn các anh góp ý. Mà cũng đúng thiệt nếu mà em làm như vậy các số lộn xộn cũng khó nhìn thiệt. Cám ơn các anh rất nhiều
 
Lần chỉnh sửa cuối:
Upvote 0
Mình làm như sau:
Mã:
Sub formatDMHH()
    Worksheets("DMHH").Range("C:D").NumberFormat = "#,###.##"
End Sub
nhưng khi hiện ra nó có dấu , ở cuối như 10.000, vậy phải làm sao để nó hiện đúng là 10.000?
 
Upvote 0
Dạ ý em là chỉ để trang trí cho nó đẹp thôi,
Em dự định tạo riêng 1 cái UDF là tách riêng phần thập phân
ví dụ Tp có 4 số thì Format(number, "#,###.###")
Tp có 5 số thì Format(number, "#,###.#####")
Tp có 2 số thì Format(number, "#,###.##")
Bạn làm ngược rồi. Thập phân do mình muốn lấy mấy số chứ làm sao xác dịnh được nó có mấy số.
(ủa mà xin lỗi, nhìn lại thì bài này xưa qua rồi)
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom