Cách lấy từ đầu tiên trong Microsoft Excel
Nếu bạn gặp trường hợp chỉ yêu cầu từ đầu tiên trong mỗi dòng của ô chứ không phải tất cả các ký tự, thì bạn phải đọc bài viết này. Hướng dẫn sau đây sẽ giúp bạn chỉ lấy từ đầu tiên thông qua mã VBA trong excel.
Trong bài viết này, chúng tôi sẽ tập trung vào cách chỉ giữ từ đầu tiên trong mỗi dòng của ô được phân tách bằng dấu chấm phẩy thông qua mã macro.
Câu hỏi: Dữ liệu tôi đang làm việc đôi khi có nhiều dòng trong mỗi ô và tôi chỉ muốn trích xuất từ đầu tiên.
Bạn có thể tìm thấy câu hỏi gốc http://www.excelforum.com/excel-programming-vba-macros/1093228-keep-first-word-in-each-line-separate-by-semicolon-and-remove-everything-else .html [tại đây]
Sau đây là ảnh chụp nhanh văn bản đầu vào (Trước trang tính)
===
Sau đây là ảnh chụp nhanh văn bản đầu vào (Sau Trang tính) trong cột A & yêu cầu đầu ra trong cột B; tham khảo ảnh chụp bên dưới:
===
===
Để lấy mã; chúng ta cần làm theo các bước sau để khởi chạy trình soạn thảo VB Nhấp vào tab Nhà phát triển Từ nhóm Mã, chọn Visual Basic
-
Sao chép đoạn mã dưới đây trong mô-đun chuẩn
Function FirstWordOnly(rng As Range) Dim Arr() As Variant Dim Count As Integer Dim i As Integer Count = Len(rng) - Len(Replace(rng, Chr(10), "")) If Count > 0 Then ReDim Arr(0 To Count) For i = 0 To Count If i = 0 Then Arr(i) = Left(rng, InStr(1, rng, " ") - 1) ElseIf j = 0 Then j = InStr(1, rng, Chr(10)) Arr(i) = Mid(rng, j + 1, InStr(j, rng, " ") - j) Else j = InStr(j + 1, rng, Chr(10)) Arr(i) = Mid(rng, j + 1, InStr(j, rng, " ") - j) End If Next FirstWordOnly = Join(Arr, "; ") Else If InStr(1, rng, " ") > 0 Then FirstWordOnly = Left(rng, InStr(1, rng, " ")) Else FirstWordOnly = rng End If End If End Function
===
Bây giờ, mã VBA đã sẵn sàng để sử dụng; chúng ta sẽ sử dụng Hàm do Người dùng Xác định mới được tạo, tức là “FirstWordOnly” trong Before Sheet.
Để nhận được đầu ra bằng cách sử dụng UDF trong ô B2, công thức sẽ là = FirstWordOnly (A2)
Giải thích mã:
Trong đoạn mã trên, chúng ta đã sử dụng các hàm COUNT, LEN, REPLACE, IF, INSTR, MID, CHR, LEFT, JOIN VBA.
‘Len (rng)’; điều này sẽ kiểm tra độ dài của ô mà chúng ta đang tham chiếu đến ‘Replace (rng, Chr (10),” “) ‘; Mã kiểm tra Chr (10) tức là ngắt dòng trong mỗi dòng và sau đó thay thế bằng dấu ngoặc kép (không có gì)
‘Count = Len (rng) – Len (Replace (rng, Chr (10),” “))’; Count sẽ lưu trữ sự khác biệt về độ dài của mỗi dòng sau khi thay thế ngắt dòng Nếu Count> 0; điều này sẽ kiểm tra xem độ dài của Count có lớn hơn không và nếu nó được tìm thấy bằng 0, tức là ô trống, thì điều kiện IF sẽ không thực thi mã. Để kiểm tra điều này, bạn có thể sử dụng = FirstWordOnly (A5) trong ô B5 & nó sẽ trả về 0
Nếu ô không trống thì vòng lặp For sẽ được sử dụng với điều kiện IF và với hàm LEFT, chúng ta sẽ lấy ra từ đầu tiên Hàm JOIN sẽ thêm dấu chấm phẩy ở cuối nếu có nhiều dòng trong mỗi ô Kết luận: Sử dụng UDF chúng ta có thể loại bỏ mọi thứ trong mỗi dòng của ô ngoại trừ từ đầu tiên đến VBA. Chức năng này sẽ hoạt động trên tất cả các phiên bản từ cũ đến mới, tức là Microsoft Excel 2003, Microsoft Excel 2007, Microsoft Excel 2010, Microsoft Excel 2013.
Nếu bạn thích blog của chúng tôi, hãy chia sẻ nó với bạn bè của bạn trên Facebook. Và bạn cũng có thể theo dõi chúng tôi trên Twitter và Facebook.
Chúng tôi rất muốn nghe ý kiến từ bạn, hãy cho chúng tôi biết cách chúng tôi có thể cải thiện, bổ sung hoặc đổi mới công việc của mình và làm cho nó tốt hơn cho bạn. Viết thư cho chúng tôi tại [email protected]