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:
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:
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:
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:
Để 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:
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:
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:
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:
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
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.
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.
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ã.
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”
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!













