Cách trích xuất dòng đầu tiên trong ô Excel

Chuyên Lắp Ráp, Cài Đặt Bộ Máy Tính Cho Văn Phòng, Gamer, Đồ Họa Cao Chuyên Lắp Ráp, Cài Đặt Bộ Máy Tính Cho Văn Phòng, Gamer, Đồ Họa Cao Chuyên Lắp Ráp, Cài Đặt Bộ Máy Tính Cho Văn Phòng, Gamer, Đồ Họa Cao

Cách trích xuất dòng đầu tiên trong ô Excel

08:59:51 01-12-2023 | Lượt xem: 446

Trong hướng dẫn này, bạn sẽ tìm hiểu 3 cách tiếp cận hiệu quả để trích xuất dòng văn bản đầu tiên từ các ô Excel: công thức, biểu thức chính quy và macro VBA.

Cách trích xuất dòng đầu tiên trong ô Excel bằng công thức

Các công thức trong Excel là xương sống của thao tác dữ liệu. Khi nói đến việc trích xuất dòng đầu tiên từ một ô, các bước sau đây phác thảo một phương pháp đơn giản để đạt được điều này:

  1. Xác định ngắt dòng trong văn bản. Điều này có thể được thực hiện với sự trợ giúp của hàm CHAR(10).

  2. Xác định vị trí của ký tự dòng mới. Để xác định chính xác vị trí của ngắt dòng đầu tiên trong nội dung của ô, có thể sử dụng chức năng TÌM KIẾM hoặc TÌM KIẾM . Các biến thể công thức cho các hàm này như sau:
    FIND(CHAR(10), cell) hoặc SEARCH(CHAR(10), cell)

  3. Điều chỉnh cho vị trí. Vì Excel đếm các vị trí từ 1, trong khi các ngôn ngữ lập trình thường đếm từ 0, hãy trừ 1 từ vị trí ngắt dòng. Điều chỉnh này đảm bảo trích xuất văn bản chính xác mà không bao gồm chính ký tự trả về đầu dòng:
    FIND(CHAR(10), cell) -1

  4. Trích xuất văn bản trước khi ngắt dòng. Khi đã biết vị trí ngắt dòng, giờ đây bạn có thể sử dụng hàm LEFT để trích xuất văn bản đến điểm đó.

Công thức chung có dạng này:

LEFT(cell, FIND(CHAR(10), cell) -1)

Ví dụ: nếu văn bản gốc được lưu trữ trong ô A3, công thức sẽ xuất hiện dưới dạng:

=LEFT(A3, FIND(CHAR(10), A3) -1)

Công thức hoạt động rất tốt cho các ô có nhiều dòng. Tuy nhiên, có một lưu ý đáng lưu ý khi xử lý các ô một dòng. Trong những trường hợp như vậy, công thức trả về lỗi #VALUE vì hàm FIND không tìm được ký tự trả về đầu dòng CHAR(10) trong ô.

Để giải quyết hạn chế này, một giải pháp hay bao gồm việc đưa công thức cốt lõi vào trong hàm IFERROR:

=IFERROR(LEFT(A3, FIND(CHAR(10), A3) -1), A3)

Công thức tinh chỉnh này giữ nguyên nội dung ô gốc trong trường hợp không phát hiện thấy ngắt dòng, loại bỏ lỗi một cách hiệu quả.

Cách trích xuất dòng đầu tiên trong ô Excel bằng công thức

Bằng cách tìm hiểu những sắc thái này, bạn có thể tự tin sử dụng các công thức để lấy dòng đầu tiên từ các ô Excel, bất kể tình huống nào.

Lấy dòng văn bản đầu tiên trong Excel 365

Trong Excel 365, việc lấy dòng đầu tiên từ một ô có thể được thực hiện một cách hiệu quả bằng cách sử dụng hàm TEXTBEFORE, hàm này cho phép bạn trích xuất văn bản trước một ký tự được chỉ định. Trong trường hợp này, ký tự chúng ta quan tâm là ký tự dòng mới, được biểu thị bằng CHAR(10).

TEXTBEFORE( ô , CHAR(10))

Giả sử văn bản gốc được lưu trữ trong ô A3, công thức trích xuất dòng đầu tiên sẽ như sau:

=TEXTBEFORE(A3, CHAR(10))

Để đảm bảo trải nghiệm mượt mà khi xử lý các ô chỉ chứa một dòng văn bản, hãy gói công thức cốt lõi bằng hàm IFERROR. Cách tiếp cận này duy trì nội dung ô gốc trong trường hợp không có dấu ngắt dòng, ngăn chặn bất kỳ thông báo lỗi nào.

=IFERROR(TEXTBEFORE(A3, CHAR(10)), A3)

Kỹ thuật dựa trên công thức này đảm bảo một phương pháp đáng tin cậy để trích xuất dòng văn bản đầu tiên từ các ô Excel 365, bất kể chúng chứa nhiều dòng hay chỉ một dòng.

Lấy dòng văn bản đầu tiên trong Excel 365

Chỉ giữ lại dòng văn bản đầu tiên bằng Excel Regex

Một giải pháp khác để chỉ giữ dòng đầu tiên và loại bỏ phần còn lại là sử dụng biểu thức chính quy. Phương thức này giới thiệu một hàm tùy chỉnh có tên RegExpExtract, tuân theo cú pháp sau:

RegExpExtract(văn bản, mẫu, [instance_num], [match_case])

Ý tưởng đằng sau RegExpExtract là sử dụng mẫu biểu thức chính quy khớp với mọi thứ trước ký tự dòng mới (\n) trong ô ban đầu. Sau đó, bạn có thể kéo phần văn bản đó vào một ô khác bằng cách sử dụng công thức sau:

RegExpExtract( ô , ".*\n", 1)

Chia nhỏ các thành phần của công thức chung này:

  • Ô - là tham chiếu đến ô chứa nhiều dòng văn bản.

  • ".*\n" - là mẫu biểu thức chính quy khớp với bất kỳ ký tự nào (.) được lặp lại 0 hoặc nhiều lần (*) theo sau là ký tự dòng mới (\n).

  • 1 - là số phiên bản, chỉ định rằng chúng tôi chỉ muốn trích xuất lần xuất hiện đầu tiên của mẫu trong ô.

Ví dụ: để sao chép dòng văn bản đầu tiên từ ô A3 sang ô B3, hãy sử dụng công thức đơn giản sau:

=RegExpExtract(A3, ".*\n", 1)

Tuy nhiên, có một cảnh báo với nó. Nếu ô nguồn chỉ chứa một dòng văn bản, không có bất kỳ ký tự dòng mới nào thì công thức sẽ không trả về gì (chuỗi trống). Điều này là do không có mẫu nào khớp với mẫu ".*\n" trong những trường hợp như vậy.

Để khắc phục sự cố này, bạn có thể sử dụng câu lệnh IF để kiểm tra xem có bất kỳ kết quả nào khớp với mẫu trong ô hay không. Nếu không có kết quả khớp thì bạn chỉ cần trả về giá trị ô ban đầu. Ngược lại, bạn trích xuất trận đấu đầu tiên như trước. Công thức được sửa đổi trông như thế này:

=IF(RegExpExtract(A3, ".*\n", 1)="", A3, RegExpExtract(A3, ".*\n", 1))

Phiên bản cải tiến này của công thức đảm bảo rằng bạn luôn nhận được một số giá trị trong cột B, cho dù đó là một dòng hay nhiều dòng văn bản trong cột A.

Chỉ giữ lại dòng văn bản đầu tiên bằng Excel Regex

Copy dòng đầu tiên sang sheet khác bằng Excel VBA

Để tự động hóa quá trình trích xuất các dòng đầu tiên từ các ô trong phạm vi đã chọn và di chuyển chúng sang một trang tính mới, macro VBA là một giải pháp hiệu quả. Phần này phác thảo macro, cung cấp hướng dẫn từng bước về cách triển khai và sử dụng các khả năng của nó.

Mã VBA để lấy dòng đầu tiên từ các ô đã chọn

Sub ExtractFirstLine() Dim rng As Range Dim cell As Range Dim delimiter As String Dim NewSheets As Integer Dim SheetName As String Dim Sheet As Worksheet ' Đặt dấu phân cách = Chr(10) ' Đặt tên trang tính mới SheetName = "Trích xuất dòng đầu tiên - kết quả " Lỗi GoTo noselect ' Đặt phạm vi ô dựa trên lựa chọn Đặt rng = Lựa chọn ' Kiểm tra xem phạm vi ô có được chọn hay không Nếu Selection.Cells.Count = 1 Sau đó Đặt rng = Application.InputBox( "Hãy chọn phạm vi:" , "Trích xuất văn bản trước dấu phân cách " , Selection.Address, , , , , 8) Nếu rng không có gì thì thoát Sub End Nếu ' Tạo một bảng tính mới Dim newWorksheet As Worksheet Đặt newWorksheet = ThisWorkbook.Worksheets.Add ' Đặt phần bắt đầu của phạm vi trên bảng tính mới Đặt DestinationRange = newWorksheet.Range( "A1" ) ' Đi qua từng ô trong phạm vi nguồn và trích xuất chuỗi văn bản đến dấu phân cách Đối với mỗi ô Trong rng ' Kiểm tra xem ô đó có trống không Nếu không trống (cell.Value) Sau đó ' Tìm vị trí dấu phân cách Dim delimiterPosition As Long delimiterPosition = InStr(1, cell.Value, delimiter, vbTextCompare) ' Nếu tìm thấy dấu phân cách, hãy trích xuất văn bản trước nó và ghi nó vào một ô mới trên trang tính mới Nếu delimiterPosition > 0 Sau đó, DestinationRange. Value = Left(cell.Value, delimiterPosition - 1) Else ' Nếu không tìm thấy dấu phân cách, hãy ghi toàn bộ nội dung của ô vào một trang tính mới DestinationRange.Value = cell.Value End If ' Chuyển đến hàng tiếp theo trên một trang tính mới bảng tính Đặt DestinationRange = DestinationRange.Offset(1, 0) End If Ô tiếp theo ' Đặt tên duy nhất cho trang tính mới NewSheets = 1 cho mỗi trang tính trong ThisWorkbook.Sheets If InStr(Sheet.Name, SheetName) > 0 Thì NewSheets = NewSheets + 1 End Nếu Trang tiếp theo SheetName = SheetName & "(" & NewSheets & ")" newWorksheet.Name = SheetName Xong: Thoát Sub noselect: MsgBox "Không có gì được chọn" , vbExThanks End Sub

Cách sử dụng macro:

  1. Thêm mã. Tích hợp mã được cung cấp vào sổ làm việc của bạn theo hướng dẫn trong Cách chèn mã VBA trong Excel.

  2. Chọn phạm vi. Chọn phạm vi ô chứa văn bản bạn muốn trích xuất dòng đầu tiên.

  3. Chạy macro. Nhấn Alt + F8 để mở hộp thoại Macro . Chọn macro ExtractFirstLine và bấm Chạy để thực thi mã.

Kết quả macro sẽ tạo một sheet mới tên là “Extract 1st line - results” và copy những dòng đầu tiên được trích xuất từ ​​dãy đã chọn vào sheet đó.

Những điểm quan trọng cần lưu ý:

  1. Nếu không có phạm vi nào được chọn, macro sẽ nhắc bạn chọn một phạm vi, phạm vi này có thể chỉ bao gồm một ô duy nhất.

  2. Macro sử dụng Chr(10) làm dấu phân cách để trích xuất dòng văn bản đầu tiên. Nếu cần, bạn có thể chỉ định một dấu phân cách khác trong mã để lấy văn bản trước nó.

  3. Các ô trống sẽ bị bỏ qua trong quá trình trích xuất.

  4. Nếu một ô không trống nhưng không tìm thấy dấu phân cách đã chỉ định thì toàn bộ nội dung của ô sẽ đ ược trả về.

  5. Nếu bạn muốn bảng tính kết quả được đặt tên khác, bạn có thể đổi tên tab trang tính trực tiếp trong Excel hoặc chỉ định tên trang tính mong muốn trong mã VBA.

Bằng cách sử dụng macro VBA Excel này, bạn có thể nhanh chóng trích xuất các dòng văn bản đầu tiên từ các ô và sắp xếp chúng trong một trang tính mới. Bạn cũng có thể điều chỉnh macro theo tùy chọn của mình, chẳng hạn như sử dụng dấu phân cách khác hoặc thay đổi tên của bảng kết quả.

Copy dòng đầu tiên sang sheet khác bằng Excel VBA


Đối tác của chúng tôi

0984 741 740