Note: The other languages of the website are Google-translated. Back to English

Làm cách nào để chuyển các hàng trùng lặp sang cột trong Excel?

Giả sử bạn có một loạt dữ liệu trong Excel, bây giờ, bạn muốn chuyển các hàng trùng lặp thành nhiều cột như hình minh họa sau đây, bạn có ý tưởng hay nào để giải quyết công việc này không?

Chuyển các hàng trùng lặp sang cột bằng mã VBA

doc-convert-trùng-lặp-hàng-cột-1


mũi tên màu xanh bong bóng bên phải Chuyển các hàng trùng lặp sang cột bằng mã VBA

Rất tiếc, không có cách nào trực tiếp để bạn giải quyết nó trong Excel, nhưng bạn có thể tạo mã VBA để giải quyết nó, vui lòng làm như sau:

1. Giữ phím tắt ALT + F11 phím để mở Cửa sổ Microsoft Visual Basic for Applications.

2. Nhấp chuột Chèn > Mô-đunvà dán mã sau vào Cửa sổ mô-đun.

Mã VBA: Chuyển các hàng trùng lặp thành nhiều cột

Sub ConvertTable()
'Updateby Extendoffice
Dim xArr1 As Variant
Dim xArr2 As Variant
Dim InputRng As Range, OutRng As Range
Dim xRows As Long
xTitleId = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
Set OutRng = OutRng.Range("A1")
xArr1 = InputRng.Value
t = UBound(xArr1, 2): xRows = 1
With CreateObject("Scripting.Dictionary")
    .CompareMode = 1
    For i = 2 To UBound(xArr1, 1)
        If Not .exists(xArr1(i, 1)) Then
            xRows = xRows + 1: .Item(xArr1(i, 1)) = VBA.Array(xRows, t)
            For ii = 1 To t
                xArr1(xRows, ii) = xArr1(i, ii)
            Next
        Else
            xArr2 = .Item(xArr1(i, 1))
            If UBound(xArr1, 2) < xArr2(1) + t - 1 Then
                ReDim Preserve xArr1(1 To UBound(xArr1, 1), 1 To xArr2(1) + t - 1)
                For ii = 2 To t
                    xArr1(1, xArr2(1) + ii - 1) = xArr1(1, ii)
                Next
            End If
            For ii = 2 To t
                xArr1(xArr2(0), xArr2(1) + ii - 1) = xArr1(i, ii)
            Next
            xArr2(1) = xArr2(1) + t - 1: .Item(xArr1(i, 1)) = xArr2
        End If
    Next
End With
OutRng.Resize(xRows, UBound(xArr1, 2)).Value = xArr1
End Sub

3. Sau đó nhấn F5 để chạy mã này, chọn phạm vi dữ liệu mà bạn muốn chuyển đổi các hàng trùng lặp thành nhiều cột trong hộp thoại bật ra, xem ảnh chụp màn hình:

doc-convert-trùng-lặp-hàng-cột-2

4. Nhấp chuột OKvà chọn một ô mà bạn muốn đặt kết quả vào hộp thoại sau, xem ảnh chụp màn hình:

doc-convert-trùng-lặp-hàng-cột-3

5. Và sau đó nhấp vào OK , dữ liệu đã chọn của bạn đã được chuyển đổi thành sau:

doc-convert-trùng-lặp-hàng-cột-4


Các bài liên quan:

Làm thế nào để chuyển vị / chuyển đổi các cột và hàng thành một hàng?

Làm thế nào để chuyển / chuyển đổi các cột và hàng thành một cột?

Làm cách nào để chuyển / chuyển đổi một cột đơn thành nhiều cột trong Excel?


Các công cụ năng suất văn phòng tốt nhất

Kutools cho Excel giải quyết hầu hết các vấn đề của bạn và tăng 80% năng suất của bạn

  • Tái sử dụng: Chèn nhanh công thức phức tạp, biểu đồ và bất cứ thứ gì bạn đã sử dụng trước đây; Mã hóa ô với mật khẩu; Tạo danh sách gửi thư và gửi email ...
  • Thanh siêu công thức (dễ dàng chỉnh sửa nhiều dòng văn bản và công thức); Bố cục đọc (dễ dàng đọc và chỉnh sửa số lượng ô lớn); Dán vào Dải ô đã Lọchữu ích. Cảm ơn !
  • Hợp nhất các ô / hàng / cột mà không làm mất dữ liệu; Nội dung phân chia ô; Kết hợp các hàng / cột trùng lặp... Ngăn chặn các ô trùng lặp; So sánh các dãyhữu ích. Cảm ơn !
  • Chọn trùng lặp hoặc duy nhất Hàng; Chọn hàng trống (tất cả các ô đều trống); Tìm siêu và Tìm mờ trong Nhiều Sổ làm việc; Chọn ngẫu nhiên ...
  • Bản sao chính xác Nhiều ô mà không thay đổi tham chiếu công thức; Tự động tạo tài liệu tham khảo sang Nhiều Trang tính; Chèn Bullets, Hộp kiểm và hơn thế nữa ...
  • Trích xuất văn bản, Thêm Văn bản, Xóa theo Vị trí, Xóa không gian; Tạo và In Tổng số phân trang; Chuyển đổi giữa nội dung ô và nhận xéthữu ích. Cảm ơn !
  • Siêu lọc (lưu và áp dụng các lược đồ lọc cho các trang tính khác); Sắp xếp nâng cao theo tháng / tuần / ngày, tần suất và hơn thế nữa; Bộ lọc đặc biệt bằng cách in đậm, in nghiêng ...
  • Kết hợp Workbook và WorkSheets; Hợp nhất các bảng dựa trên các cột chính; Chia dữ liệu thành nhiều trang tính; Chuyển đổi hàng loạt xls, xlsx và PDFhữu ích. Cảm ơn !
  • Hơn 300 tính năng mạnh mẽ. Hỗ trợ Office / Excel 2007-2021 và 365. Hỗ trợ tất cả các ngôn ngữ. Dễ dàng triển khai trong doanh nghiệp hoặc tổ chức của bạn. Đầy đủ tính năng Dùng thử miễn phí 30 ngày. Bảo đảm hoàn lại tiền trong 60 ngày.
tab kte 201905

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!
officetab dưới cùng

 

Nhận xét (8)
Chưa có xếp hạng. Hãy là người đầu tiên xếp hạng!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Ví dụ tuyệt vời - đã tiết kiệm cho tôi rất nhiều thời gian. Cảm ơn nhiều !!!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cảm ơn rất nhiều!

Chúa phù hộ bạn.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi rất hạnh phúc vì điều này đã làm việc. Bạn là người hùng của tôi!!!!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Thực sự tuyệt vời. Đã tiết kiệm cho tôi rất nhiều thời gian
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chỉ hoạt động nếu có cùng một số bản sao và gọi anh ta là a. Nó không hoạt động nếu có số lượng bản sao khác nhau.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Điều này phù hợp với tôi với số lượng trùng lặp khác nhau Brian. Tôi chỉ gặp sự cố với bản sao đầu tiên hiển thị hai lần trên đầu ra của mình, nhưng điều đó rất nhỏ. Tôi chỉ ước mình biết cách sao chép các kết quả trùng lặp sang định dạng được phân tách bằng dấu phẩy thay vì các cột mới cho mỗi kết quả.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào! Ai giúp tôi với...

Tôi đã tìm thấy mã này để biến các hàng dữ liệu có ID duy nhất thành một hàng duy nhất cho mỗi ID có nhiều cột (cột tối thiểu 5 - bao gồm ID, cột tối đa 25 - bao gồm ID). Sau đó, nó xóa tất cả các hàng trùng lặp dựa trên ID duy nhất. Loại mã này hoạt động, vấn đề duy nhất là nó không chuyển hai cột dữ liệu.

Số hàng dữ liệu trên mỗi ID duy nhất thay đổi từ 1 đến 6 (do đó, tôi sẽ cần tối thiểu 5 cột đến tối đa 25 cột)

Có 20,000 hàng dữ liệu nhưng tôi có thể chia nhỏ dữ liệu theo bộ phận để có tối thiểu 5,000 hàng dữ liệu và chạy từng bộ phận riêng biệt.

Cảm ơn bạn đã giúp đỡ!


Dữ liệu của tôi trông giống như thế này

ABCDE
MÔ TẢ ID STATE # DATE
3 CPR US 567 6/19/2019
3 AET US 568 6/19/2019
4 CPR US 6/19/2019
4 AET
4 AED

và vv

Tôi muốn nó trông như thế này

ABCDEFGHIJKLM ETC .....
TIỂU SỬ MÔ TẢ ID # TRẠNG THÁI MÔ TẢ NGÀY # TIỂU BẢNG MÔ TẢ NGÀY # NGÀY
3 CPR US 567 6/19/2019 AET US 568 6/19/2019
4 CPR US AET US AED US

Đây là đoạn mã mà tôi tìm thấy loại hoạt động đó (có thể vì nó được viết để làm gì, nó chỉ chuyển dữ liệu trong cột D và E và bỏ qua cột B & C ... để lại hai cột trống trên mỗi tập dữ liệu. Tôi thích điều đó nó sẽ xóa các bản sao sau khi di chuyển tất cả dữ liệu vào một cột duy nhất dựa trên ID duy nhất

Địa chỉ phụ_To_Columns ()

Dim lastRow As Long
Dim addressCount dưới dạng số nguyên: addressCount = 0

lastRow = Range ("A" & Rows.Count) .End (xlUp) .Row

Đối với i = lastRow To 3 Step -1
If Cells (i, 1) .Value = Cells (i - 1, 1) .Value Then
addressCount = addressCount + 1
Range (Cells (i - 1, 10), Cells (i - 1, (addressCount * 5) + 10)) = Range (Cells (i, 4), Cells (i, (addressCount * 5) + 4)). Giá trị
Hàng (i) .Xóa
Khác
địa chỉCount = 0
Cuối Nếu
Tiếp theo

End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
chào mọi người

Tôi đã thử mã này và nó hoạt động thành công.

Câu hỏi của tôi là Làm thế nào tôi có thể làm điều tương tự bằng cách sử dụng Ms Access cho dữ liệu lớn hơn. Tôi có thể nhận được một truy vấn hoạt động giống nhau hay không?

Cảm ơn bạn rất nhiều .
Không có bình luận nào được đăng ở đây
Để lại ý kiến ​​của bạn
Đăng với tư cách khách
×
Đánh giá bài viết này:
0   Nhân vật
Các vị trí được đề xuất

Kết nối với chúng tôi

Bản quyền © 2009 - www.extendoffice.com. | Đã đăng ký Bản quyền. cung cấp bởi ExtendOffice. | BẢN ĐỒ CHI NHÁNH
Microsoft và logo Office là các nhãn hiệu hoặc nhãn hiệu đã đăng ký của Microsoft Corporation tại Hoa Kỳ và / hoặc các quốc gia khác.
Được bảo vệ bởi Sectigo SSL