Code tách dãy số thành các nhóm 3 chữ số ?

Liên hệ QC

TrungChinhs

Thành viên tích cực
Tham gia
18/2/08
Bài viết
1,475
Được thích
2,469
Nghề nghiệp
Công chức
Nhờ các bạn viết giúp tôi code tách một dãy số bất kỳ thành các nhóm 3 chữ số
Ví dụ từ dãy số: 3456789098105 tách từ phải qua trái thành các nhóm 3 chữ số cách nhau bởi dấu gạch ngang như sau: 3-456-789-098-105

Lưu ý: không phải là Format cel

Thanks !
 
Lần chỉnh sửa cuối:
Bác định dùng hàm Function hay Sub? nếu dãy số dài 5, 7 chữ số thì tính sao (tức là không chia hết cho 3)?
 
Upvote 0
Bác định dùng hàm Function hay Sub? nếu dãy số dài 5, 7 chữ số thì tính sao (tức là không chia hết cho 3)?

Tôi muốn dùng Sub, số chữ số là không xác định, cách phân nhóm tương tự như kiểu Number Format (#.###) mục đích là để sau khi tách sẽ dùng hàm Spilt để làm việc tiếp.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn thử hàm này

Mã:
Function Tach(num As Double, Dec As String)
Dim ch1
ch1 = Application.ThousandsSeparator
Tach = Replace(Format(num, "#,##0"), ch1, Dec)
End Function
Cú pháp: = Tach(So_nao,Ky_tu_tach)


Còn đây là Sub: Bạn chọn vùng cần tách rồi chạy Code này

Mã:
Sub Doi()
Dim Cll As Range, Ch1, Dec
Ch1 = Application.ThousandsSeparator
Dec = InputBox("Nhap ky tu tach:")
For Each Cll In Selection
Cll = Replace(Format(Cll, "#,##0"), Ch1, Dec)
Next
End Sub


Nếu để Spilit thì sao không làm luôn cho gọn:

Mã:
Function Chia(Num As Double, Id As Long)
Dim mg
mg = Split(Format(Num, "#,##0"), Application.ThousandsSeparator)
If Id<0 Or Id > Ubound(mg) then Chia="" : Exit Function
Chia = mg(Id)
End Function


 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
@ sealand !
Tôi thử không được, bạn cho xin file test. Cảm ơn !
 
Upvote 0
Tôi chưa thử cách của anh Sealand, nếu dùng mẹo tách thì sẽ tách 3 số từ phải sang trái, không hiểu có đúng ý bác Chính không?
 
Upvote 0
Cảm ơn sealand ! Sub của bạn OK rồi.
 
Upvote 0
Tôi chưa thử cách của anh Sealand, nếu dùng mẹo tách thì sẽ tách 3 số từ phải sang trái, không hiểu có đúng ý bác Chính không?
Anh Hướng à, chiều nào là tuy tác giả thôi. Nếu muốn từ trái sang ta dùng hàm StrReverse chuyển nguồn và đích là OK thôi anh à.
 
Upvote 0
Vì anh TrungChinh đề cập đến DÃY SỐ ---> Mà đã là SỐ thì với cách thể hiện của Excel, nó không thể vượt quá 15 ký tự
Vậy sao không dùng:
Format(Num,"###-###-###-###-###")
cho nó gọn nhỉ?
Cần gì phải tính đến dấu phân cách ngàn
Cái này nếu dùng công thức thì dạng vầy:
=TEXT(A1,"###-###-###-###-###")
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom