Tom có ​​một trang tính chứa khá nhiều văn bản. Anh ta cần một cách để kéo, từ bất kỳ văn bản của ô nhất định nào, chữ cái đầu tiên của mỗi từ trong dấu ngoặc đơn. Ví dụ: nếu một ô chứa “Có một loài cỏ dại (trong mùa xuân) cần được diệt trừ”, thì Tom cần kéo “dts”

từ văn bản đó. Anh ấy nghi ngờ việc này phải được thực hiện bằng macro nhưng không biết bắt đầu từ đâu.

Nếu bạn muốn thực hiện tác vụ này theo cách thủ công, nó không quá khó để thực hiện. Tôi sẽ đi qua các bước một cách nhanh chóng và tổng quát.

Giả sử rằng văn bản của bạn nằm trong cột A và mỗi ô chỉ chứa một tập hợp các dấu ngoặc đơn. Trong trường hợp này, bạn có thể điền thông tin sau vào cột B:

=IFERROR(LEFT(MID(A1,FIND("(",A1)+1,LEN(A1)),FIND(")", MID(A1,FIND("(",A1)+1,LEN(A1)))-1),"")

Mặc dù tôi đã chia công thức thành hai dòng ở đây, hãy nhớ rằng nó là một công thức duy nhất và nên được nhập như vậy. Sao chép nó xuống nhiều ô nếu cần thiết. Những gì bạn kết thúc với cột B là văn bản được chứa với bộ dấu ngoặc đơn đầu tiên (nếu có) nếu ô.

Tiếp theo, chọn tất cả các ô trong cột B, nhấn Ctrl + C, sau đó sử dụng Dán Đặc biệt để dán các giá trị trở lại các ô đó. Điều này sẽ loại bỏ các công thức nhưng để lại văn bản trong ngoặc đơn được trích xuất.

Bây giờ các ô trong cột B vẫn nên được chọn. Bạn muốn sử dụng trình hướng dẫn Văn bản thành Cột (từ tab Dữ liệu của ruy-băng) để chia các từ ra thành các ô riêng lẻ. Điều này rất dễ thực hiện bằng cách sử dụng một khoảng trắng làm dấu phân cách trong trình hướng dẫn. Sau khi làm điều này, bạn kết thúc bằng một từ duy nhất trong mỗi cột bắt đầu bằng cột C.

Bây giờ, trong cột đầu tiên không có bất kỳ từ nào trong đó (giả sử là cột J), bạn sẽ nhập công thức sau:

=LEFT(TRIM(C1),1) & LEFT(TRIM(D1),1) & LEFT(TRIM(E1),1)

& LEFT(TRIM(F1),1) & LEFT(TRIM(G1),1)) & LEFT(TRIM(H1),1)

& LEFT(TRIM(I1),1)

Một lần nữa, đây là một công thức duy nhất mặc dù nó được hiển thị ở đây trên ba dòng. Điều này dẫn đến các chữ cái đầu tiên mong muốn của bạn trong cột J.

Rõ ràng, quá trình này là “có thể thực hiện được” nếu bạn chỉ cần kéo các ký tự một lần. Nếu bạn cần làm việc đó thường xuyên hơn, thì bạn sẽ được phục vụ tốt hơn khi dựa vào một chức năng do người dùng xác định để thực hiện công việc cho bạn. Sau đây là một cái đơn giản sẽ hoạt động tốt:

Function PickInitials(sRaw As String) As String     Dim sTemp As String     Dim J As Integer     Dim Wds() As String

sTemp = ""

J = InStr(sRaw, "(")

If J > 0 Then         sTemp = Mid(sRaw, J + 1)

J = InStr(sTemp, ")")

If J > 0 Then             sTemp = Left(sTemp, J - 1)

End If         Wds = Split(sTemp)



sTemp = ""

For J = 0 To UBound(Wds)

sTemp = sTemp & Left(Trim(Wds(J)),1)

Next J     End If     PickInitials = sTemp End Function

Để sử dụng hàm, tất cả những gì bạn cần làm là sử dụng phần sau trong ô:

=PickInitials(A1)

Hàm sẽ hoạt động tốt nếu không có văn bản trong dấu ngoặc đơn trong ô, nếu chỉ có dấu ngoặc đơn mở và nó sẽ không bị xen kẽ bởi nhiều khoảng trắng giữa các từ. Hàm giữ lại cách viết hoa của các chữ cái đầu tiên. Nếu bạn muốn nó trả về tất cả các ký tự dưới dạng chữ thường, bạn có thể thay đổi dòng cuối cùng của macro thành sau:

PickInitials = LCase(sTemp)

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

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