Dấu chấm/phẩy phân cách lặp lại mỗi 4 chữ số

Liên hệ QC

jubinell

Thành viên mới
Tham gia
27/11/09
Bài viết
37
Được thích
16
Nghề nghiệp
Tư vấn kinh doanh/kinh tế, nhạc sỹ, game thủ (keke
Chào các bạn,

Mình muốn định dạng một số các ô chứa số trong Excel sao cho dấu chấm/phây ngăn cách sẽ tách số đó ra thành từng cụm bốn chữ số thay vì ba (ten-thousand separator thay cho thousand-separator).

Ví dụ:

1,000 -> 1000
10,000 -> 1,0000
1,000,000 ->100,0000
1,000,000,000 -> 10,0000,0000

Có bạn nào biết cách đổi định dạng này bằng custom format hay bằng VBA không?
Mình không muốn thay đổi kết cấu của Office hay của Windows (ví dụ, regional & language settings, international settings, etc.)
 
Định dạng custom
[>999999999999]####","####","####","####;[>99999999]####","####","####;####","####

Áp dụng cho số lớn từ 10.000 trở lên, đến dưới 10^12
 
Định dạng custom
[>999999999999]####","####","####","####;[>99999999]####","####","####;####","####

Áp dụng cho số lớn từ 10.000 trở lên, đến dưới 10^12
Định dạng custom rất hay. Cám ơn bạn. Bạn ơi cho mình hỏi nếu dùng bằng VBA thì có code không bạn?
 
Định dạng custom rất hay. Cám ơn bạn. Bạn ơi cho mình hỏi nếu dùng bằng VBA thì có code không bạn?

Mời bạn tham khảo một giải pháp bên Mrexcel.com:

Mã:
Sub Yen()
Dim YenValue As String
Dim YenOld As String
Dim X As Integer
Dim YenLength As Integer
If IsEmpty(ActiveCell.Value) Then End
YenOld = ActiveCell.Formula
YenLength = Len(ActiveCell.Formula)
If YenLength / 4 = Int(YenLength / 4) Then PartCount = Int(YenLength / 4) Else PartCount = Int(YenLength / 4) + 1
    For X = 1 To PartCount
        YenValue = "," & Right(YenOld, 4) & YenValue
        If X < PartCount Then YenOld = Left(YenOld, (Len(YenOld) - 4))
    Next
YenValue = "¥" & Right(YenValue, Len(YenValue) - 1)
ActiveCell.Offset(0, 1).Formula = YenValue
End Sub
Nhưng giải pháp này sẽ cho ra kết quả là một chuỗi ký tự--không thể dùng kết quả để tính tiếp được.

Mình nghĩ cũng có thể dùng VBA để setup custom format. Nhưng nếu làm như vậy thì thà dùng custom format còn hơn.

À còn nữa, mời bạn tham khảo code của ozgrid.com về vấn đề tiền tệ của Ấn Độ.
lakh = 1,00,000
crore = 1,00,00,000
vân vân
http://www.ozgrid.com/forum/showthread.php?t=69238

Mã:
Private Sub Worksheet_Change(ByVal Target As  Range) 
     '//Written by parry
    Dim c 
    If Target.Cells.Count = 1 Then 
        Select  Case Target.Value 
        Case Is >= 1000000000 
            Target.Cells.NumberFormat = "##"",""00"",""00"",""00"",""000.00" 
        Case Is >= 10000000 
            Target.Cells.NumberFormat = "##"",""00"",""00"",""000.00" 
        Case Is >= 100000 
            Target.Cells.NumberFormat = "##"",""00"",""000.00" 
        Case Else 
            Target.Cells.NumberFormat = "##,###.00" 
        End Select 
    Else 
        For Each c In Target 
            Select Case c.Value 
            Case Is >= 1000000000 
                c.NumberFormat = "##"",""00"",""00"",""00"",""000.00" 
            Case Is >= 10000000 
                c.NumberFormat = "##"",""00"",""00"",""000.00" 
            Case Is >= 100000 
                c.NumberFormat = "##"",""00"",""000.00" 
            Case Else 
                c.NumberFormat = "##,###.00" 
            End Select 
        Next c 
    End If 
End Sub
 
Định dạng custom
[>999999999999]####","####","####","####;[>99999999]####","####","####;####","####

Áp dụng cho số lớn từ 10.000 trở lên, đến dưới 10^12

Xin nói thêm một chút là nếu muốn dùng custom format này với các số dưới 10,000 (tức là hiển thị số cũ không thêm bớt gì), thì không thể dùng đơn thuần custom format được vì Excel chỉ cho ta dùng 2 điều kiện là nhiều nhất.

Cách giải quyết:
Dùng custom format kết hợp với conditional format:

Chọn các cell cần giải quyết, xây dựng 4 điều kiện conditional format sau đây:
1) Nếu con số lớn hơn 9x12, dùng custom format ####","####","####","####

2) Nếu con số ở giữa 9x12 và 9x8, dùng custom format ####","####","####

v.v.

thì sẽ giải quyết được vấn đề này.
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom