Trong cùng một worksheet định dạng một sheet dấy chấm, một sheet dấu phẩy (1 người xem)

Liên hệ QC

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

hoangaccounting

Thành viên chính thức
Thành viên danh dự
Tham gia
11/6/06
Bài viết
68
Được thích
880
Dear các anh chị!
Cho em hỏi có cách nào viết code theo yêu cầu như sau không? Vì theo em biết định dạng trong Excel chỉ cho phép định dạng cho tất cả các workbook nếu muốn chuyển từ dấu phẩy thành dấu chấm và ngược lại, dùng SUBSTITUTE cũng không được vì phải định dạng kiểu number để còn tính toán.
Nhờ sự tư vấn của các anh chị. Chân thành cảm ơn.
Trong file excel của mình có một sheet là tiếng anh, một sheet là tiếng việt (song ngữ)
Làm thế nào để cài đặt cho sheet tiếng anh dấu ngăn cách số tiền là dấu phẩy(,)(vd: 100,100.56) ở sheet tiếng việt là dấu chấm(.) (vd: 100.100,56)
 
Dear các anh chị!
Cho em hỏi có cách nào viết code theo yêu cầu như sau không? Vì theo em biết định dạng trong Excel chỉ cho phép định dạng cho tất cả các workbook nếu muốn chuyển từ dấu phẩy thành dấu chấm và ngược lại, dùng SUBSTITUTE cũng không được vì phải định dạng kiểu number để còn tính toán.
Nhờ sự tư vấn của các anh chị. Chân thành cảm ơn.
Bạn dùng code sau:

- Ở sheet tiếng Anh:

Mã:
Private Sub Worksheet_Activate()
With Application
        .DecimalSeparator = "."
        .ThousandsSeparator = ","
        .UseSystemSeparators = False
End With
End Sub

- Ở sheet tiếng Việt:

Mã:
Private Sub Worksheet_Activate()
With Application
        .DecimalSeparator = ","
        .ThousandsSeparator = "."
        .UseSystemSeparators = False
End With
End Sub

Bạn tham khảo thêm file đính kèm nhé.
 

File đính kèm

Upvote 0
Dear các anh chị!
Cho em hỏi có cách nào viết code theo yêu cầu như sau không? Vì theo em biết định dạng trong Excel chỉ cho phép định dạng cho tất cả các workbook nếu muốn chuyển từ dấu phẩy thành dấu chấm và ngược lại, dùng SUBSTITUTE cũng không được vì phải định dạng kiểu number để còn tính toán.
Nhờ sự tư vấn của các anh chị. Chân thành cảm ơn.
Theo tôi, để làm được yêu cầu trên thì cách làm như sau:
- Sheet VN là sheet tiếng Việt: nhập số, công thức bình thường.
- Sheet EN là sheet tiếng Anh: các ô số, công thức lấy từ sheet VN qua hàm chuyển định dạng NumEn.
Ví dụ ô A2 sheet VN=1.234,56, ô A2 sheet EN=NumEn(VN!A2,2) > "1,234.56"

Hàm NumEn có 2 đối số:
num là số cần chuyển đổi (bắt buộc nhập)
n là số số thập phân cần định dạng (không bắt buộc nhập, nếu không nhập thì n=0)

Mã:
Function NumEn(num As Double, Optional n As Integer) As String
Dim ths As String
If n > 0 Then ths = "#,##0" & "." & String(n, "0") Else ths = "#,##0"
NumEn = Replace(Replace(Replace(Format(num, ths), ",", "*"), ".", ","), "*", ".")
End Function
 
Upvote 0
Gởi bài xong mới thấy bài của domfootwear. Cách này rất hay nhưng mình không nghĩ tới.
Học thêm được một bài học.
 
Upvote 0
Bổ sung thêm bài số #2 là khi mình thoát file đó, nó tự trả về định dạng ban đầu.

Mã:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    With Application
        .UseSystemSeparators = True
    End With
End Sub
 

File đính kèm

Upvote 0
Chào hai bác domfootwear và bác phamduylong
Cách của bác domfootwear rất hay nhưng không linh động như hàm của bác phamduylong tuy nhiên khi sử dụng công thức của bác phamduylong rồi thì số liệu thành dạng text chứ không còn là number nữa. Bác phamduylong có cách nào vẫn giữ lại là number chứ không phải là text được không ạ.
Cảm ơn hai bác nhiều.
 
Upvote 0
Tại vì cái yêu cầu này hơi đặc trưng một tý là một sheet theo dấy phẩy, một sheet theo dấu chấm. Hơn nữa sau khi định dạng nó phải là dạng number để tính toán chứ không phải là dạng text. Nếu dạng text thì hàm SUBSTITUTE hay hàm NumEn như thầy Long nêu nên theo mình dùng như cách của anh doomfootware là ổn, vẫn tính toán được. Còn muốn dấu phẩy hay dấu chấm cho cả worksheet thì chỉ cần định dạng như sau chứ ko cần phải công thức gì cả
vào Tool ===> option ===> chọn International ===> Bỏ chọn trong ô use system separators sau đó trong ô Decimal separator bạn thay dấu chấm thành dấu phẩy, trong ô Thousands separator thay dấu phẩy thành dấu chấm. Tương tự nếu muốn chuyển ngược lại từ dấu chấm thành dấu phẩy thì Decimal separator bạn thay dấu phẩy thành dấu chấm, trong ô Thousands separator thay dấu chấm thành dấu phẩy. Làm như thế thì bạn vẫn dùng công thức tính toán được vì nó vẫn hiểu là định dạng theo kiểu Number chứ không phải theo dạng text
.
Nếu anh chị nào có công thức khác làm trên cùng một worksheet mà dạng number thì cho em tham khảo với ạ.
 
Upvote 0
Nếu anh chị nào có công thức khác làm trên cùng một worksheet mà dạng number thì cho em tham khảo với ạ.
Không có "cửa" đâu bạn à! Đã là Number thì nó phải tuân thủ đúng quy tắc về Symbol trong Control Panel ---> Vậy nên phương pháp chỉnh trực tiếp vào Control Panel là gọn nhẹ nhất
Ngoài ra: Dùng các hàm xử lý TEXT để biến Number thành Text cũng hay ---> Có điều nó "kéo theo" cả 1 đóng thứ khác phải thay đổi, chẳng hạn trước khi tính toán, phải xử lý Text ấy thì mới ra được kết quả
 
Upvote 0
Ông thầy em kêu làm 12 bài thực hành excel mà có bài dùng dấu phẩy để chia theo đơn vị ngàn, có bài thì dùng dấu chấm.. vậy em phải làm ntn ạ?--=0--=0--=0
 
Upvote 0

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

Back
Top Bottom