Kiến Thức Excel 3 Cách gộp ô trong Excel không mất dữ liệu

3 Cách gộp ô trong Excel không mất dữ liệu

Khi dùng tính năng Merge trong Excel để gộp ô thì sẽ gặp vấn đề làm mất dữ liệu của các ô đang có. Để tiến hành gộp ô trong Excel mà không mất dữ liệu ta có thể sử dụng các cách sau:

  • Cách 1: Sử dụng công thức để gom nội dung nhiều ô vào 1 ô (với các hàm TEXTJOIN, CONCAT, CONCATENATE).
  • Cách 2: Sử dụng Paste Special để sao chép dữ liệu nhiều ô vào 1 ô.
  • Cách 3: Sử dụng Macro gộp vùng chọn thành 1 ô duy nhất.

Dưới đây là hướng dẫn chi tiết các cách gộp ô không làm mất dữ liệu trong Excel:

downloadTải ngay file Excel thực hành gộp ô không mất dữ liệu

Cách 1: Sử dụng công thức để gom nội dung nhiều ô vào 1 ô trong Excel

Để gộp ô mà không mất nội dung, ta có thể sử dụng các hàm và công thức để gom nội dung của nhiều ô sang 1 ô mới:

1. Sử dụng hàm TEXTJOIN

Hàm TEXTJOIN dùng với phiên bản Excel 365/2019 trở lên với cú pháp như sau:

=TEXTJOIN(delimiter, ignore_empty, range1, [range2]...)

Ví dụ ta có bảng dữ liệu gồm họ, tên đệm và tên như dưới đây:

dữ liệu tên để gộp ô

Giờ ta muốn gộp tất cả các ô đó thành tên hoàn chỉnh ở trong 1 ô thì ta sẽ sử dụng hàm TEXTJOIN như sau:

=TEXTJOIN(" ", TRUE, A6:C6)

Kết quả các ô họ, tên đệm và tên được gộp lại và có khoảng trắng như sau:

công thức hàm Textjoin để gộp ô

Tương tự, ta cũng có thể sử dụng hàm TEXTJOIN để gộp các ô dữ liệu và được ngăn cách bằng dấu phẩy ở giữa (,). Chẳng hạn ta gộp dữ liệu về địa chỉ như sau:

bảng dữ liệu địa chỉ để gộp ô

Để gộp các ô địa chỉ này ta sử dụng công thức sau:

=TEXTJOIN(", ", TRUE, F6:J6)

Kết quả địa chỉ được như sau:

công thức gộp ô địa chỉ

Trong trường hợp bạn muốn gộp nhiều ô vào cùng 1 ô nhưng dữ liệu được chia thành từng dòng thì ta sẽ dùng CHAR(10) để ngắt dòng và bật Warp Text. Ví dụ vẫn dùng để ghép địa chỉ như trên nhưng muốn ngắt dòng thì ta sử dụng công thức sau:

=TEXTJOIN(CHAR(10), TRUE, F6:J6)

Kết quả hiển thị sẽ như sau:

công thức gộp ô địa chỉ ngắt dòng

2. Sử dụng hàm TRIM để gộp ô

Ngoài sử dụng hàm TEXTJOIN thì ta có thể sử dụng hàm TRIM có thể áp dụng với tất cả các phiên bản EXCEL. Ví dụ với bảng dữ liệu tên dưới đây:

bảng dữ liệu sử dụng hàm TRIM

Giả sử ta muốn ghép các cột FirstName, MiddleName và LastName vào với nhau thành tên đầy đủ thì sử dụng hàm TRIM như sau:

=TRIM(A2 & " " & IF(B2<>"", B2 & " ", "") & C2)

Kết quả như sau:

gộp dữ liệu nhiều ô với hàm TRIM

3. Sử dụng hàm CONCAT (Excel 365/2019) hoặc hàm CONCATENATE

Vẫn với ví dụ muốn ghép tên cột FirstName, MiddleName và LastName với nhau thành tên đầy đủ ta có thể sử dụng hàm CONCAT như sau:

=CONCAT(A2," ",B2," ",C2)

Công thức trên có thể thay thế bằng các hàm đơn giản hơn bằng sử dụng toán tử: =A2 & "  " & B2 & "  " & C2

gộp dữ liệu nhiều ô với hàm CONCAT

Cách 2: Sử dụng Paste Special để gộp ô nhưng không làm mất dữ liệu

Trong trường hợp bạn chỉ muốn gộp dữ liệu vài ô thành 1 ô trong Excel chứ không cần gộp nhiều mẫu thì ta có thể sử dụng một mẹo nhỏ với Paste Special thay vì sử dụng các hàm gộp dữ liệu ô như cách 1.

Để gộp ô mà không mất dữ liệu ta sử dụng Paste Special như sau:

  • Bước 1: Bôi đen các ô cần gộp.
  • Bước 2: Bấm tổ hợp phím Ctrl + V để sao chép dữ liệu.
  • Bước 3: Chọn 1 ô dữ liệu bất kỳ rồi => click đúp chuột vào ô đó để chỉnh sửa nội dung => bấm tổ hợp phím Ctrl + Shift + V để sao chép dữ liệu dạng tĩnh vào ô đó.

Kết quả là dữ liệu trong các ô sẽ được gộp vào 1 ô khác mà không mất dữ liệu.

minh họa gộp ô không mất dữ liệu bằng Paste Special

Cách này chỉ là một mẹo để thực hiện nhanh. Để tối ưu thêm và có thể muốn sử dụng lúc nào cũng được và như ý muốn thì hãy tham khảo cách sử dụng Macro ở cách số 3.

Cách 3: Sử dụng Macro để gộp ô trong Excel không mất dữ liệu

Để gộp ô không mất dữ liệu trong Excel ta có thể sử dụng Marco với các bước như sau:

Bước 1: Vào thẻ View => Chọn Macro => khi cửa sổ Macro xuất hiện thì nhập tên (ví dụ: gopo) vào ô Macro Name => xong bấm Create.

mở macro trong thẻ view

tạo Macro

Bước 2: Khi cửa sổ VBA Editor xuất hiện thì dán mã sau vào:

Sub MergeKeepAllText()
Dim rng As Range, c As Range, txt As String
If TypeName(Selection) <> "Range" Then Exit Sub
Set rng = Selection
For Each c In rng
If Len(c.Value) > 0 Then
If Len(txt) > 0 Then txt = txt & vbLf
txt = txt & c.Text
End If
Next c
Application.DisplayAlerts = False
rng.Merge
Application.DisplayAlerts = True
With rng
.Value = txt
.WrapText = True
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
End Sub

Sau đó bấm Alt + F8 để chạy mã.

dán mã macro gộp ô

Bước 3: Sau khi chạy mã Macro bây giờ ta có thể sử dụng nó để gộp ô mà không mất dữ liệu như sau:

Bôi đen các ô dữ liệu cần gộp => vào View => chọn Macro => sau đó chọn Macro vừa tạo “gopo”

các bước để dùng Macro để gộp ô

Ngoài cách sử dụng Macro để gộp ô trên, thì ta có thể sử dụng mã Macro dưới đây để tiến hành gộp ô nhưng mỗi hàng theo nhiều cột:

Sub MergeEachRowAcross()
Dim r As Long, lastRow As Long, lastCol As Long, sep As String, s As String, c As Long
sep = " | " ' đổi dấu phân cách nếu muốn
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
For r = 2 To lastRow ' giả sử hàng 1 là tiêu đề
s = ""
For c = 1 To lastCol
If Len(Cells(r, c).Value) > 0 Then
If Len(s) > 0 Then s = s & sep
s = s & Cells(r, c).Text
End If
Next c
Cells(r, lastCol + 1).Value = s
Next r
End Sub

Trên đây là hướng dẫn chi tiết cách để gộp ô trong Excel từ đơn giản đến nâng cao. Mong rằng bài viết hữu ích và chúc các bạn áp dụng thành công!