Làm cách nào để chuyển các ô trong một cột dựa trên các giá trị duy nhất trong một cột khác?
Giả sử, bạn có một dải dữ liệu chứa hai cột, bây giờ, bạn muốn chuyển các ô trong một cột sang các hàng ngang dựa trên các giá trị duy nhất trong một cột khác để nhận được kết quả sau. Bạn có bất kỳ ý tưởng hay nào để giải quyết vấn đề này trong Excel?
Chuyển đổi ô trong một cột dựa trên các giá trị duy nhất có công thức
Chuyển đổi ô trong một cột dựa trên các giá trị duy nhất với mã VBA
Chuyển đổi các ô trong một cột dựa trên các giá trị duy nhất với Kutools cho Excel
Chuyển đổi ô trong một cột dựa trên các giá trị duy nhất có công thức
Với các công thức mảng sau, bạn có thể trích xuất các giá trị duy nhất và chuyển dữ liệu tương ứng của chúng thành các hàng ngang, vui lòng thực hiện như sau:
1. Nhập công thức mảng này: = INDEX ($ A $ 2: $ A $ 16, MATCH (0, COUNTIF ($ D $ 1: $ D1, $ A $ 2: $ A $ 16), 0)) vào ô trống, ví dụ như D2, và nhấn Shift + Ctrl + Nhập các phím với nhau để có kết quả chính xác, xem ảnh chụp màn hình:
Chú thích: Trong công thức trên, A2: A16 là cột mà bạn muốn liệt kê các giá trị duy nhất từ đó và D1 là ô phía trên ô công thức này.
2. Sau đó, kéo chốt điền xuống các ô để trích xuất tất cả các giá trị duy nhất, xem ảnh chụp màn hình:
3. Và sau đó tiếp tục nhập công thức này vào ô E2: =IFERROR(INDEX($B$2:$B$16, MATCH(0, COUNTIF($D2:D2,$B$2:$B$16)+IF($A$2:$A$16<>$D2, 1, 0), 0)), 0), và nhớ nhấn Shift + Ctrl + Nhập phím để nhận kết quả, xem ảnh chụp màn hình:
Chú thích: Trong công thức trên: B2: B16 là dữ liệu cột mà bạn muốn chuyển đổi, A2: A16 là cột mà bạn muốn chuyển đổi các giá trị dựa trên và D2 chứa giá trị duy nhất mà bạn đã trích xuất ở Bước 1.
4. Sau đó kéo chốt điền sang bên phải của các ô mà bạn muốn liệt kê dữ liệu đã hoán vị cho đến khi hiển thị 0, xem ảnh chụp màn hình:
5. Và sau đó tiếp tục kéo chốt điều khiển điền xuống phạm vi ô để nhận dữ liệu chuyển vị như hình minh họa sau:
Chuyển đổi ô trong một cột dựa trên các giá trị duy nhất với mã VBA
Có thể là các công thức phức tạp để bạn hiểu, ở đây, bạn có thể chạy mã VBA sau để có được kết quả mong muốn mà bạn cần.
1. Giữ ALT + F11 phím để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.
2. Nhấp chuột Chèn > Mô-đunvà dán mã sau vào Mô-đun Cửa sổ.
Mã VBA: Chuyển đổi ô trong một cột dựa trên các giá trị duy nhất trong một cột khác:
Sub transposeunique()
'updateby Extendoffice
Dim xLRow As Long
Dim i As Long
Dim xCrit As String
Dim xCol As New Collection
Dim xRg As Range
Dim xOutRg As Range
Dim xTxt As String
Dim xCount As Long
Dim xVRg As Range
On Error Resume Next
xTxt = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("please select data range(only two columns):", "Kutools for Excel", xTxt, , , , , 8)
Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)
If xRg Is Nothing Then Exit Sub
If (xRg.Columns.Count <> 2) Or _
(xRg.Areas.Count > 1) Then
MsgBox "the used range is only one area with two columns ", , "Kutools for Excel"
Exit Sub
End If
Set xOutRg = Application.InputBox("please select output range(specify one cell):", "Kutools for Excel", xTxt, , , , , 8)
If xOutRg Is Nothing Then Exit Sub
Set xOutRg = xOutRg.Range(1)
xLRow = xRg.Rows.Count
For i = 2 To xLRow
xCol.Add xRg.Cells(i, 1).Value, xRg.Cells(i, 1).Value
Next
Application.ScreenUpdating = False
For i = 1 To xCol.Count
xCrit = xCol.Item(i)
xOutRg.Offset(i, 0) = xCrit
xRg.AutoFilter Field:=1, Criteria1:=xCrit
Set xVRg = xRg.Range("B2:B" & xLRow).SpecialCells(xlCellTypeVisible)
If xVRg.Count > xCount Then xCount = xVRg.Count
xRg.Range("B2:B" & xLRow).SpecialCells(xlCellTypeVisible).Copy
xOutRg.Offset(i, 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Application.CutCopyMode = False
Next
xOutRg = xRg.Cells(1, 1)
xOutRg.Offset(0, 1).Resize(1, xCount) = xRg.Cells(1, 2)
xRg.Rows(1).Copy
xOutRg.Resize(1, xCount + 1).PasteSpecial Paste:=xlPasteFormats
xRg.AutoFilter
Application.ScreenUpdating = True
End Sub
3. Sau đó nhấn F5 để chạy mã này và một hộp nhắc sẽ bật ra để nhắc bạn chọn phạm vi dữ liệu mà bạn muốn sử dụng, xem ảnh chụp màn hình:
4. Và sau đó nhấp vào OK , một hộp nhắc khác sẽ bật ra để nhắc bạn chọn một ô để đặt kết quả, xem ảnh chụp màn hình:
6. Nhấp chuột OK và dữ liệu trong cột B đã được chuyển đổi dựa trên các giá trị duy nhất trong cột A, xem ảnh chụp màn hình:
Chuyển đổi các ô trong một cột dựa trên các giá trị duy nhất với Kutools cho Excel
Nếu bạn có Kutools cho Excel, kết hợp Các hàng kết hợp nâng cao và Chia ô tiện ích, bạn có thể nhanh chóng hoàn thành tác vụ này mà không cần bất kỳ công thức hoặc mã nào.
Kutools cho Excel : với hơn 300 bổ trợ Excel tiện dụng, dùng thử miễn phí không giới hạn trong 30 ngày. |
Sau khi cài đặt Kutools cho Excel, vui lòng làm như sau:
1. Chọn phạm vi dữ liệu mà bạn muốn sử dụng. (Nếu bạn muốn giữ dữ liệu gốc, trước tiên hãy sao chép và dán dữ liệu vào vị trí khác.)
2. Sau đó nhấn vào Kutools > Hợp nhất & Tách > Các hàng kết hợp nâng cao, xem ảnh chụp màn hình:
3. Trong Kết hợp các hàng dựa trên cột hộp thoại, vui lòng thực hiện các thao tác sau:
(1.) Nhấp vào tên cột mà bạn muốn chuyển dữ liệu dựa trên đó và chọn Khóa chính;
(2.) Nhấp vào cột khác mà bạn muốn chuyển đổi và nhấp vào Kết hợp sau đó chọn một dấu phân tách để phân tách dữ liệu được kết hợp, chẳng hạn như dấu cách, dấu phẩy, dấu chấm phẩy.
4. Sau đó nhấn vào Ok , dữ liệu trong cột B đã được kết hợp với nhau trong một ô dựa trên cột A, xem ảnh chụp màn hình:
5. Và sau đó chọn các ô được kết hợp và nhấp vào Kutools > Hợp nhất & Tách > Chia ô, xem ảnh chụp màn hình:
6. Trong Chia ô hộp thoại, chọn Chia thành các cột theo Kiểu và sau đó chọn dấu phân tách để phân tách dữ liệu kết hợp của bạn, xem ảnh chụp màn hình:
7. Sau đó nhấn vào Ok và chọn một ô để đặt kết quả phân tách trong hộp thoại hiện ra, xem ảnh chụp màn hình:
8. Nhấp chuột OK, và bạn sẽ nhận được kết quả như bạn cần. Xem ảnh chụp màn hình:
Tải xuống và dùng thử miễn phí Kutools cho Excel ngay!
Demo: Chuyển các ô trong một cột dựa trên các giá trị duy nhất với Kutools cho Excel
Công cụ năng suất văn phòng tốt nhất
Nâng cao kỹ năng Excel của bạn với Kutools for Excel và trải nghiệm hiệu quả hơn bao giờ hết. Kutools for Excel cung cấp hơn 300 tính năng nâng cao để tăng năng suất và tiết kiệm thời gian. Bấm vào đây để có được tính năng bạn cần nhất...
Tab Office mang lại giao diện Tab cho Office và giúp công việc của bạn trở nên dễ dàng hơn nhiều
- Cho phép chỉnh sửa và đọc theo thẻ trong Word, Excel, PowerPoint, Publisher, Access, Visio và Project.
- Mở và tạo nhiều tài liệu trong các tab mới của cùng một cửa sổ, thay vì trong các cửa sổ mới.
- Tăng 50% năng suất của bạn và giảm hàng trăm cú nhấp chuột cho bạn mỗi ngày!