Jean cần thay dấu phẩy bằng dấu chấm trong một bảng số. Anh ấy làm việc ở Pháp, sử dụng PC tiếng Pháp, nhưng anh ấy cần “dịch” những con số này cho một ứng dụng không phải Excel của Mỹ. Khi anh ấy thực hiện Tìm và Thay thế theo cách thủ công, mọi thứ đều hoạt động tốt. Tất nhiên, số của anh ta được chuyển đổi thành chuỗi, nhưng điều đó không sao với Jean. Khi anh ta cố gắng thực hiện cùng một thao tác Tìm và Thay thế trong macro, không có gì xảy ra; dấu phẩy dường như bị bỏ qua. Jean tự hỏi làm thế nào anh ta có thể thực hiện nhiệm vụ này trong macro thay vì cần phải làm thủ công mỗi lần.

Tương đối dễ dàng tạm thời sửa đổi những gì Excel sử dụng làm cài đặt khu vực để nó có thể hiển thị thông tin như Jean muốn. Macro sau sẽ chuyển đổi qua lại khá dễ dàng giữa các cài đặt mong muốn:

Sub ChangeNumberFormat()

With Application         .UseSystemSeparators = False         If .DecimalSeparator = "." Then             .DecimalSeparator = ","

.ThousandsSeparator = "."

Else            .DecimalSeparator = "."

.ThousandsSeparator = ","

End If     End With End Sub

Điều đó thay đổi cách thông tin được hiển thị và sau đó bạn có thể xuất thông tin sang bất kỳ định dạng không phải Excel nào mong muốn (chẳng hạn như CSV). Sau khi hoàn tất, hãy chạy lại macro và bạn sẽ có cài đặt khu vực của mình trở lại như ban đầu. Lợi ích của cách tiếp cận này là bạn không bao giờ thực sự thay đổi những gì có trong các ô, chỉ là cách thông tin đó được hiển thị. Điều này có nghĩa là các số của bạn vẫn là số, có thể tiếp tục được sử dụng như vậy.

Nếu bạn cần một cái gì đó trực tiếp hơn, thì có lẽ tốt nhất là không sử dụng Tìm và Thay thế. Thay vào đó, hãy sử dụng macro để sửa đổi trực tiếp những gì có trong mỗi ô. Cách tiếp cận như vậy có thể chạy nhanh hơn nhiều so với việc dựa vào Tìm và Thay thế, ngay cả trong macro. Đây là một ứng dụng đơn giản của khái niệm này:

Sub SwitchCommasPeriods()

Dim c As Range     Dim sTemp As String          For Each c In Selection         sTemp = c.Text         sTemp = Replace(sTemp, ",", "|")

sTemp = Replace(sTemp, ".", ",")

sTemp = Replace(sTemp, "|", ".")

c = sTemp     Next c End Sub

Lưu ý một số điều trong macro. Đầu tiên, nó xem xét thuộc tính Văn bản cho mỗi ô. Lý do là vì thuộc tính Text trả về giá trị được định dạng của ô — hay nói cách khác là giá trị được hiển thị. (Nếu bạn chỉ nhìn vào thuộc tính Value, bạn sẽ nhận được số chưa được định dạng, số này không phải là thứ bạn muốn sử dụng.)

Điều thứ hai cần lưu ý là chức năng Replace được sử dụng để thay thế tất cả các dấu phẩy bằng một thanh dọc, sau đó là tất cả các dấu chấm bằng dấu phẩy và cuối cùng là tất cả các thanh dọc bằng dấu chấm. Cách tiếp cận này là cần thiết vì về cơ bản bạn đang hoán đổi dấu chấm và dấu phẩy trong văn bản.

Để sử dụng macro, chỉ cần chọn các ô bạn muốn ảnh hưởng và sau đó chạy nó. Chỉ những ô đã chọn đó mới được xử lý. Nếu một ô chứa công thức, macro sẽ thay thế công thức đó bằng kết quả đã xử lý của công thức. Tuy nhiên, điều này sẽ ổn cho mục đích của Jean.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (13675) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365.