Làm cách nào để liệt kê tất cả các kết hợp có thể có từ một cột trong Excel?
Nếu bạn muốn trả lại tất cả các kết hợp có thể có từ dữ liệu cột đơn để nhận được kết quả như hình ảnh chụp màn hình bên dưới, bạn có cách nào nhanh chóng để giải quyết tác vụ này trong Excel không?
Liệt kê tất cả các kết hợp có thể có từ một cột duy nhất với các công thức
Liệt kê tất cả các kết hợp có thể có từ một cột duy nhất với mã VBA
Liệt kê tất cả các kết hợp có thể có từ một cột duy nhất với các công thức
Các công thức mảng sau đây có thể giúp bạn đạt được công việc này, vui lòng thực hiện từng bước:
1. Đầu tiên, bạn nên tạo hai ô công thức trợ giúp. Trong ô C1, vui lòng nhập công thức dưới đây và nhấn Ctrl + Shift + Enter các phím để nhận kết quả:
2. Trong ô C2, nhập công thức sau và nhấn Ctrl + Shift + Enter các phím với nhau để có kết quả thứ hai, xem ảnh chụp màn hình:
3. Sau đó, sao chép và dán công thức sau vào ô D2, rồi nhấn Ctrl + Shift + Enter các phím với nhau để có kết quả đầu tiên, xem ảnh chụp màn hình:
4. Và sau đó, chọn ô công thức này và kéo chốt điền xuống cho đến khi các ô trống xuất hiện. Bây giờ, bạn có thể thấy tất cả các kết hợp của dữ liệu cột được chỉ định được hiển thị như hình minh họa bên dưới:
Liệt kê tất cả các kết hợp có thể có từ một cột duy nhất với mã VBA
Các công thức trên chỉ có sẵn cho các phiên bản Excel mới hơn, nếu bạn có các phiên bản Excel cũ hơn, mã VBA sau có thể giúp bạn.
1. nhấn Alt + F11 các phím đồng thời để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.
2. Sau đó nhấn vào Chèn > Mô-đun, sao chép và dán mã VBA bên dưới vào cửa sổ.
Mã VBA: Liệt kê tất cả các kết hợp có thể có từ một cột duy nhất
Sub ConnectArr()
'Updateby ExtendOffice
Dim xDValue As Variant
Dim xOutRg As Range
Dim xDictionary As Object
Dim xF As Long
Dim xChar As String
xDValue = Range("A2:A6").Value 'the data range
Set xOutRg = Range("C1") 'output range
xChar = "," 'separator
For xF = 1 To UBound(xDValue)
Set xDictionary = CreateObject("Scripting.Dictionary")
xDictionary(0) = "Sets of " & xF
Call ConnectValue(xDValue, xDictionary, 0, xF, 0, "", xChar)
xOutRg.Offset(0, xF - 1).Resize(xDictionary.Count).Value = WorksheetFunction.Transpose(xDictionary.Items)
Set xDictionary = Nothing
Next
End Sub
Sub ConnectValue(ByRef pDValue, ByRef pDictionary, ByRef pLevel, ByVal pMaxLevel, ByVal pIndex, ByVal pValue, ByVal pChar)
Dim xF As Long
If pLevel = pMaxLevel Then
pDictionary(pDictionary.Count + 1) = pValue
Exit Sub
End If
For xF = pIndex + 1 To UBound(pDValue)
If pValue = "" Then
Call ConnectValue(pDValue, pDictionary, pLevel + 1, pMaxLevel, xF, pDValue(xF, 1), pChar)
Else
Call ConnectValue(pDValue, pDictionary, pLevel + 1, pMaxLevel, xF, pValue & pChar & pDValue(xF, 1), pChar)
End If
Next
End Sub
- A2: A6: là danh sách dữ liệu mà bạn muốn sử dụng;
- C1: là ô đầu ra;
- ,: dấu phân cách để phân tách các kết hợp.
3. Và sau đó, nhấn F5 phím để thực thi mã này. Tất cả các kết hợp từ cột đơn được liệt kê như hình ảnh chụp màn hình bên dưới:
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!