Khi phân tích dữ liệu trong Excel, bạn có thể thấy có nhiều hàng trùng lặp. Trong trường hợp này, có lẽ bạn muốn nhanh chóng hợp nhất các hàng đó. Bài viết này sẽ cung cấp 2 cách nhanh chóng để thực hiện việc này.
Nhiều người dùng thường xuyên cần hợp nhất các hàng trùng lặp và tính tổng các giá trị theo trong Excel. Chẳng hạn, tôi có một dải dữ liệu trong trang tính Excel chứa nhiều mục nhập trùng lặp, như ảnh chụp màn hình sau đây. Do đó, tôi muốn hợp nhất các hàng trùng lặp và tính tổng các giá trị tương ứng trong một cột khác. Chắc chắn sẽ rất rắc rối nếu tôi làm việc này một cách thủ công. Vì vậy, tôi sử dụng 2 cách sau đây để nhận ra nó.
Cách 1: Sử dụng chức năng “Consolidate”
- Trước hết, hãy nhấp vào một ô trống nơi bạn muốn đặt dữ liệu đã hợp nhất và tổng hợp.
- Sau đó, chuyển sang tab “Dữ liệu” và nhấp vào nút “Hợp nhất”.
- Trong hộp thoại bật lên, đảm bảo “Tổng” được chọn trong hộp “Hàm”.
- Tiếp theo, nhấp vào
.
- Sau đó, chọn phạm vi mà bạn muốn hợp nhất và nhấp vào
.
- Sau đó, nhấp vào nút “Thêm” trong hộp thoại “Hợp nhất”.
- Sau đó, đánh dấu vào tùy chọn “Hàng trên cùng” và “Cột bên trái”.
- Cuối cùng, nhấp vào nút “OK”.
- Ngay lập tức, các hàng được hợp nhất, như thể hiện trong ảnh chụp màn hình sau.
Cách 2: Sử dụng Code VBA của Excel
- Ngay từ đầu, hãy chọn phạm vi mà bạn muốn.
- Sau đó, kích hoạt trình soạn thảo VBA theo “Cách chạy mã VBA trong Excel của bạn".
- Tiếp theo, sao chép mã VBA sau vào một mô-đun.
Sub MergeRowsSumValues()
Dim objSelectedRange As Excel.Range
Dim varAddressArray As Variant
Dim nStartRow, nEndRow As Integer
Dim strFirstColumn, strSecondColumn As String
Dim objDictionary As Object
Dim nRow As Integer
Dim objNewWorkbook As Excel.Workbook
Dim objNewWorksheet As Excel.Worksheet
Dim varItems, varValues As Variant
On Error GoTo ErrorHandler
Set objSelectedRange = Excel.Application.Selection
varAddressArray = Split(objSelectedRange.Address(, False), ":")
nStartRow = Split(varAddressArray(0), "$")(1)
strFirstColumn = Split(varAddressArray(0), "$")(0)
nEndRow = Split(varAddressArray(1), "$")(1)
strSecondColumn = Split(varAddressArray(1), "$")(0)
Set objDictionary = CreateObject("Scripting.Dictionary")
For nRow = nStartRow To nEndRow
strItem = ActiveSheet.Range(strFirstColumn & nRow).Value
strValue = ActiveSheet.Range(strSecondColumn & nRow).Value
If objDictionary.Exists(strItem) = False Then
objDictionary.Add strItem, strValue
Else
objDictionary.Item(strItem) = objDictionary.Item(strItem) + strValue
End If
Next
Set objNewWorkbook = Excel.Application.Workbooks.Add
Set objNewWorksheet = objNewWorkbook.Sheets(1)
varItems = objDictionary.keys
varValues = objDictionary.items
nRow = 0
For i = LBound(varItems) To UBound(varItems)
nRow = nRow + 1
With objNewWorksheet
.Cells(nRow, 1) = varItems(i)
.Cells(nRow, 2) = varValues(i)
End With
Next
objNewWorksheet.Columns("A:B").AutoFit
ErrorHandler:
Exit sub
End Sub
- Sau đó, nhấn “F5” để chạy macro này ngay bây giờ.
- Khi macro kết thúc, một sổ làm việc Excel mới sẽ hiển thị, trong đó bạn có thể thấy các hàng đã hợp nhất và dữ liệu tổng hợp, giống như hình ảnh bên dưới.
sự so sánh
| Ưu điểm | Nhược điểm | |
| Phương pháp 1 | Dễ dàng hoạt động | Không thể xử lý hai cột không cạnh nhau |
| Phương pháp 2 | 1. Thuận tiện cho việc tái sử dụng | 1. Hơi khó hiểu với người mới học VBA |
| 2. Không làm rối sheet Excel gốc ở chỗ nó đưa dữ liệu đã gộp vào file mới | 2. Không xử lý được XNUMX cột không cạnh nhau |
Khi gặp sự cố Excel
Như chúng ta đã biết, đôi khi Excel có thể gặp sự cố. Trong trường hợp này, tệ nhất là tệp Excel hiện tại có thể bị hỏng trực tiếp. Khi đó, bạn không còn lựa chọn nào khác ngoài việc cố gắng phục hồi excel. Nó yêu cầu bạn phải nhờ các chuyên gia trợ giúp hoặc sử dụng một công cụ sửa chữa Excel chuyên dụng, chẳng hạn như DataNumen Excel Repair.
Giới thiệu tác giả:
Shirley Zhang là một chuyên gia phục hồi dữ liệu trong DataNumen, Inc., công ty hàng đầu thế giới về công nghệ khôi phục dữ liệu, bao gồm hư hỏng SQL Server và các sản phẩm phần mềm sửa chữa triển vọng. Để biết thêm thông tin, hãy truy cập www.datanumennăm








