Cần giúp đỡ về loại bỏ số 0 thập phân bị thừa ở đuôi. (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

hung2412

Thành viên tích cực
Tham gia
5/8/08
Bài viết
929
Được thích
240
Giới tính
Nam
Mình chào các bạn GPE!
Mình nhờ các bạn giúp đỡ cho mình vấn đề này với, cụ thể như sau:
Mình có 1 file Excel, ở cột E có những ô có số dạng thập phân (2 số thập phân), mình muốn loại bỏ những số 0 thập phân bị thừa. Ví dụ như:
+ Ô E8 có số 866,80 => 866,8 (Bỏ 1 số 0 ở đuôi)
+ Ô E9 có số 885,00 => 885 (Bỏ 2 số 0 ở đuôi)
+ Ô E10 có số 2.487,58 => 2.487,58 (Giữ nguyên).
Mình mong các bạn GPE chỉ giáo.
Trân trọng cảm ơn!
P/s: Có file đính kèm
 

File đính kèm

Mình chào các bạn GPE!
Mình nhờ các bạn giúp đỡ cho mình vấn đề này với, cụ thể như sau:
Mình có 1 file Excel, ở cột E có những ô có số dạng thập phân (2 số thập phân), mình muốn loại bỏ những số 0 thập phân bị thừa. Ví dụ như:
+ Ô E8 có số 866,80 => 866,8 (Bỏ 1 số 0 ở đuôi)
+ Ô E9 có số 885,00 => 885 (Bỏ 2 số 0 ở đuôi)
+ Ô E10 có số 2.487,58 => 2.487,58 (Giữ nguyên).
Mình mong các bạn GPE chỉ giáo.
Trân trọng cảm ơn!
P/s: Có file đính kèm
Định dạng General thì được 2 cái ý đầu, nhưng mất cái ý sau. Định dạng với # thì được cái ý sau, mất 2 cái ý đầu!! Chưa biết phải làm thế nào nữa!!+-+-+-++-+-+-+
 
Định dạng General thì được 2 cái ý đầu, nhưng mất cái ý sau. Định dạng với # thì được cái ý sau, mất 2 cái ý đầu!! Chưa biết phải làm thế nào nữa!!+-+-+-++-+-+-+
Thế mới nói, đó là vấn đề mình đưa lên diễn đàn nhờ sự giúp đỡ của các Pro.!$@!!
 
Ủa! CF ở đâu mà chẳng có?
Mà bạn có biết CF là gì không ta? Conditional Formating đó, Excel 2003 sao mà không có
Tớ biết CF mà, nhưng bạn vu_tuan_manh_linh nói là Chức năng Format Number trong Condictional Formatting chỉ có trên excel 2007 trở lên. Mà tớ thì đang xài excel 2003. Mong bạn chỉ giáo.
 
Tớ biết CF mà, nhưng bạn vu_tuan_manh_linh nói là Chức năng Format Number trong Condictional Formatting chỉ có trên excel 2007 trở lên. Mà tớ thì đang xài excel 2003. Mong bạn chỉ giáo.

Bạn muốn code thì như sau:

Mã:
Sub DinhDang()
    Dim rng As Range
    For Each rng In Sheet1.[E8:E42]
        If Evaluate("MOD(" & rng.Address & ", 1)") = 0 Then
            rng.NumberFormat = "#,##0"
        Else
            rng.NumberFormat = "#,##0.0#"
        End If
    Next
    
End Sub

Lưu ý: Bạn đừng xưng "tớ" ở đây nhé.
 
Tớ biết CF mà, nhưng bạn vu_tuan_manh_linh nói là Chức năng Format Number trong Condictional Formatting chỉ có trên excel 2007 trở lên. Mà tớ thì đang xài excel 2003. Mong bạn chỉ giáo.
1) Chữ màu xanh là cái gì vậy?
2) Conditional Formatting có trong tất cả các phiên bản excel từ 2003, 2007, 2010, 2013
Trong excel 2003 CF ở menu Format đó.
 
1) Chữ màu xanh là cái gì vậy?
2) Conditional Formatting có trong tất cả các phiên bản excel từ 2003, 2007, 2010, 2013
Trong excel 2003 CF ở menu Format đó.

Sẽ không format được number nếu dùng phiên bản 2003 trở xuống.
 
Dùng cách này đi bạn!! Chịu khó đặt cột phụ, filter rồi đặt 3 lần định dạng số là được!!
 

File đính kèm

Bạn muốn code thì như sau:

Mã:
Sub DinhDang()
    Dim rng As Range
    For Each rng In Sheet1.[E8:E42]
        If Evaluate("MOD(" & rng.Address & ", 1)") = 0 Then
            rng.NumberFormat = "#,##0"
        Else
            rng.NumberFormat = "#,##0.0#"
        End If
    Next
    
End Sub

Lưu ý: Bạn đừng xưng "tớ" ở đây nhé.
Mình đã áp dụng code của bạn và thật đúng theo đề bài, mình xin cảm ơn tất cả các bạn.
 
Mình đã áp dụng code của bạn và thật đúng theo đề bài, mình xin cảm ơn tất cả các bạn.
Một lời khuyên dành cho các thành viên "háo code" nhưng không viết được code: bạn chỉ dùng đoạn code được 1 lần, hoặc cùng lắm là dùng tương tự với file có kết cấu tương tự. Chuyển sang file khác thì phải sửa code một chút. Vậy nên cái gì bác Bill đã vẽ sẵn ra rồi thì cố gắng mà tận dụng để làm kỹ năng.
Code của anh Hai lúa sửa thế này cho tùy biến vùng định dạng:
PHP:
Sub DinhDang()
    Dim rng As Range
    For Each rng In Selection
        If Evaluate("MOD(" & rng.Address & ", 1)") = 0 Then
            rng.NumberFormat = "#,##0"
        Else
            rng.NumberFormat = "#,##0.0#"
        End If
    Next
End Sub
 
Một lời khuyên dành cho các thành viên "háo code" nhưng không viết được code: bạn chỉ dùng đoạn code được 1 lần, hoặc cùng lắm là dùng tương tự với file có kết cấu tương tự. Chuyển sang file khác thì phải sửa code một chút. Vậy nên cái gì bác Bill đã vẽ sẵn ra rồi thì cố gắng mà tận dụng để làm kỹ năng.
Code của anh Hai lúa sửa thế này cho tùy biến vùng định dạng:
PHP:
Sub DinhDang()
    Dim rng As Range
    For Each rng In Selection
        If Evaluate("MOD(" & rng.Address & ", 1)") = 0 Then
            rng.NumberFormat = "#,##0"
        Else
            rng.NumberFormat = "#,##0.0#"
        End If
    Next
End Sub
Mình cảm ơn lời khuyên của bạn, mình sẽ áp dụng vào công việc.
 
Tôi đã áp dụng code của bạn, nhưng sau khi chạy code xong thì báo lỗi
Run - time error '13':
Type mimatch

cụ thể ở dòng
Mã:
If Evaluate("MOD(" & rng.Address & ", 1)") = 0 Then
Các bạn vui lòng hướng dẫn , xin cảm ơn!
Quý vị thử xài code này xem sao:
PHP:
Sub DinhDang()    
Dim rng As Range   
On Error Resume Next    
For Each rng In ActiveSheet.[E8:AJ500]        
If Evaluate("MOD(" & rng.Address & ", 1)") = 0 Then
   rng.NumberFormat = "#,##0"        
Else            
   rng.NumberFormat = "#,##0.0#"        
End If    
Next    
On Error GoTo 0
End Sub
 
Cái này do bạn dùng bẫy lỗi On Error Resume Next
Tôi muốn biết tại sao bị lỗi, cách bẫy lỗi như trên là bất đắc dĩ thôi vì có thể code bị sai rồi, nhưng nó vẫn tiếp tục chạy!
Tôi thử chỉ chuột vào biến rng lúc bị lỗi thì thấy nó bị lỗi ở ô "Giám đốc duyệt" => Có thể là code này chỉ dùng cho các ô thuần là số, còn ô ký tự thì bị lỗi. Tôi thử khoanh vùng:
PHP:
For Each rng In ActiveSheet.[E8:AJ22]
=> Thì chạy ngon lành. Vậy nên chèn "On Error Resume Next" là ổn thôi, không vấn đề gì.Untitled.jpg
 
Vậy ta chỉ cần xác định vùng cần chạy code là [E8:AJ22], để khi chạy code sẽ nhanh hơn và kg bị lỗi
Do bảng tính có thể bị thêm bớt dòng, nên các bạn chỉ viết giúp code để xác định vùng trên, xin cảm ơn.
Vậy Quý vị thử xài Code này xem sao:
PHP:
Sub DinhDang()    
Dim rng As Range    
For Each rng In ActiveSheet.Range([E8], [AJ65000].End(xlUp))        
   If Evaluate("MOD(" & rng.Address & ", 1)") = 0 Then            
      rng.NumberFormat = "#,##0"        
   Else            
      rng.NumberFormat = "#,##0.0#"        
   End If    
Next    
End Sub
 

Bài viết mới nhất

Back
Top Bottom