Thêm dấu gạch ngang giữa các chữ cái (Microsoft Excel)
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 phần 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 (9633) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: