Scott tự hỏi làm thế nào anh ấy có thể làm cho Excel tự động thêm dấu gạch ngang giữa mọi chữ cái trong một ô nhất định. Ví dụ: nếu ô A1 chứa “house”, Scott muốn chuyển nó thành “h-o-u-s-e”.

Điều này có thể được thực hiện với một công thức, nhưng nó nhanh chóng trở nên khó sử dụng. Ví dụ: công thức sau có thể được sử dụng để đặt dấu gạch ngang giữa các chữ cái của bất cứ thứ gì bạn nhập vào ô A1:

=CHOOSE(LEN(A1),A1,LEFT(A1,1) & "-" & RIGHT(A1,1), LEFT(A1,1) & "-" & MID(A1,2,1) & "-" & RIGHT(A1,1), LEFT(A1,1) & "-" & MID(A1,2,1) & "-" & MID(A1,3,1) & "-"

& RIGHT(A1,1),LEFT(A1,1) & "-" & MID(A1,2,1) & "-"

& MID(A1,3,1) & "-" & MID(A1,4,1) & "-" & RIGHT(A1,1), LEFT(A1,1) & "-" & MID(A1,2,1) & "-" & MID(A1,3,1)

& "-" & MID(A1,4,1) & "-" & MID(A1,5,1) & "-" & RIGHT(A1,1))

Ví dụ cụ thể về công thức này sẽ chỉ hoạt động trên văn bản có độ dài tối đa sáu ký tự. Vì vậy, nó sẽ hoạt động đúng cho “nhà”, nhưng không hoạt động cho “hộ gia đình”. Công thức có thể được kéo dài nhưng, một lần nữa, nó sẽ nhanh chóng trở nên rất dài.

Cách tiếp cận tốt hơn là sử dụng macro để thực hiện chuyển đổi. Nếu bạn muốn chèn dấu gạch ngang ngay vào ô, bạn có thể sử dụng macro như sau:

Sub AddDashes1()

Dim Cell As Range     Dim sTemp As String     Dim C As Integer

For Each Cell In Selection         sTemp = ""

For C = 1 To Len(Cell)

sTemp = sTemp & Mid(Cell, C, 1) & "-"

Next         Cell.Value = Left(sTemp, Len(sTemp) - 1)

Next End Sub

Macro này được thiết kế để sử dụng trên một phạm vi ô đã chọn. Chỉ cần chọn các ô bạn muốn chuyển đổi, sau đó chạy macro. Dấu gạch ngang được thêm vào giữa mỗi chữ cái trong các ô.

Nếu bạn không muốn sửa đổi các giá trị ô gốc, bạn có thể tạo một hàm do người dùng định nghĩa sẽ thực hiện công việc:

Function AddDashes2(Src As String) As String     Dim sTemp As String     Dim C As Integer

Application.Volatile     sTemp = ""

For C = 1 To Len(Src)

sTemp = sTemp & Mid(Src, C, 1) & "-"

Next     AddDashes2 = Left(sTemp, Len(sTemp) - 1)

End Function

Để sử dụng chức năng này, bạn sẽ sử dụng thông tin sau trong trang tính của mình:

=AddDashes2(A1)

Nếu bạn muốn đảm bảo rằng hàm mạnh mẽ hơn một chút, bạn có thể sửa đổi nó để nó xử lý nhiều từ. Trong trường hợp như vậy, bạn sẽ không muốn nó coi khoảng trắng là “chữ cái có thể sửa được”. Ví dụ: bạn muốn quy trình thêm dấu gạch ngang vào “một hai” để nó xuất hiện dưới dạng “o-n-e t-w-o” thay vì “o-n-e- -t-w-o”. Biến thể sau của hàm sẽ thực hiện thủ thuật:

Function AddDashes3(Src As String) As String     Dim sTemp As String     Dim C As Integer

Application.Volatile     sTemp = ""

For C = 1 To Len(Src)

sTemp = sTemp & Mid(Src, C, 1)

If Mid(Src, C, 1) <> " " And           Mid(Src, C + 1, 1) <> " " And           C < Len(Src) Then             sTemp = sTemp & "-"

End If     Next     AddDashes3 = sTemp End Function

_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 (9634) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: