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

Làm cách nào để tạo tất cả các kết hợp 3 hoặc nhiều cột trong Excel?

Giả sử, tôi có 3 cột dữ liệu, bây giờ, tôi muốn tạo hoặc liệt kê tất cả các kết hợp dữ liệu trong 3 cột này như hình minh họa bên dưới. Bạn có phương pháp nào hay để giải quyết công việc này trong Excel không?

Tạo tất cả các kết hợp dựa trên 3 cột dữ liệu bằng cách sử dụng công thức

Tạo tất cả các kết hợp dựa trên 3 hoặc nhiều cột dữ liệu bằng cách sử dụng mã VBA

Tạo tất cả các kết hợp dựa trên 3 hoặc nhiều cột dữ liệu bằng cách sử dụng một tính năng tuyệt vời


Tạo tất cả các kết hợp dựa trên 3 cột dữ liệu bằng cách sử dụng công thức

Công thức dài sau đây có thể giúp liệt kê tất cả các kết hợp của 3 cột, vui lòng làm như sau:

1. Vui lòng bấm vào ô nơi xuất kết quả, sau đó sao chép và dán công thức bên dưới vào đó:

=IFERROR(INDEX($A$2:$A$4,INT((ROW(1:1)-1)/((COUNTA($B$2:$B$6)*(COUNTA($C$2:$C$5)))))+1)&"-"&INDEX($B$2:$B$6,MOD(INT((ROW(1:1)-1)/COUNTA($C$2:$C$5)),COUNTA($B$2:$B$6))+1)&"-"&INDEX($C$2:$C$5,MOD((ROW(1:1)-1),COUNTA($C$2:$C$5))+1),"")

Chú thích: Trong công thức này: A2: A4, B2: B6, C2: C5 là các phạm vi dữ liệu mà bạn muốn sử dụng.

2. Sau đó, kéo chốt điền xuống các ô cho đến khi các ô trống được hiển thị, có nghĩa là, tất cả các kết hợp của 3 cột đã được liệt kê, hãy xem ảnh chụp màn hình:


Tạo tất cả các kết hợp dựa trên 3 hoặc nhiều cột dữ liệu bằng cách sử dụng mã VBA

Công thức dài trên hơi khó sử dụng, nếu có nhiều cột dữ liệu cần sử dụng, sẽ rất phiền phức khi sửa đổi. Ở đây, tôi sẽ giới thiệu một mã VBA để xử lý nó một cách nhanh chóng.

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 Cửa sổ mô-đun.

Mã VBA: Tạo tất cả các kết hợp 3 hoặc nhiều cột

Sub ListAllCombinations()
'Updateby Extendoffice
Dim xDRg1, xDRg2, xDRg3 As Range
Dim xRg  As Range
Dim xStr As String
Dim xFN1, xFN2, xFN3 As Integer
Dim xSV1, xSV2, xSV3 As String
Set xDRg1 = Range("A2:A4")  'First column data
Set xDRg2 = Range("B2:B6")  'Second column data
Set xDRg3 = Range("C2:C5")  'Third column data
xStr = "-"   'Separator
Set xRg = Range("E2")  'Output cell
For xFN1 = 1 To xDRg1.Count
    xSV1 = xDRg1.Item(xFN1).Text
    For xFN2 = 1 To xDRg2.Count
        xSV2 = xDRg2.Item(xFN2).Text
      For xFN3 = 1 To xDRg3.Count
        xSV3 = xDRg3.Item(xFN3).Text
        xRg.Value = xSV1 & xStr & xSV2 & xStr & xSV3
        Set xRg = xRg.Offset(1, 0)
       Next
    Next
Next
End Sub

Chú thích: Trong đoạn mã trên, A2: A4, B2: B6, C2: C5 là phạm vi dữ liệu mà bạn muốn sử dụng, E2 là ô đầu ra mà bạn muốn xác định kết quả. Nếu bạn muốn nhận được tất cả các kết hợp của nhiều cột hơn, vui lòng thay đổi và thêm các tham số khác vào mã theo nhu cầu của bạn.

3. Sau đó nhấn F5 để chạy mã này và tất cả các kết hợp của 3 hoặc nhiều cột sẽ được tạo cùng một lúc, xem ảnh chụp màn hình:


Tạo tất cả các kết hợp dựa trên 3 hoặc nhiều cột dữ liệu bằng cách sử dụng một tính năng tuyệt vời

Nếu bạn có Kutools cho Excel, với sức mạnh của nó Liệt kê tất cả các kết hợp tính năng, bạn có thể liệt kê tất cả các kết hợp của nhiều cột một cách nhanh chóng và dễ dàng.

Lời khuyên:Để áp dụng điều này Liệt kê tất cả các kết hợp , trước tiên, bạn nên tải xuống Kutools cho Excel, và sau đó áp dụng tính năng một cách nhanh chóng và dễ dàng.

Sau khi cài đặt Kutools cho Excel, hãy làm như sau:

1. Nhấp chuột Kutools > Chèn > Liệt kê tất cả các kết hợp, xem ảnh chụp màn hình:

2. Trong Liệt kê tất cả các kết hợp hộp thoại, chỉ định dữ liệu cột và dấu phân cách để liệt kê các kết hợp như hình minh họa sau:

3. Sau khi thiết lập dữ liệu và dấu phân tách, hãy nhấp vào Ok , trong hộp nhắc tiếp theo, hãy chọn một ô để định vị kết quả, xem ảnh chụp màn hình:

4. Và sau đó, nhấp vào OK , tất cả các kết hợp đã được tạo ngay lập tức như hình minh họa bên dưới:

Nhấp để Tải xuống Kutools cho Excel và dùng thử miễn phí ngay!


  • 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 và Lưu giữ dữ liệu; Nội dung phân chia ô; Kết hợp các hàng trùng lặp và Tổng / Trung bình... 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 ...
  • Yêu thích và Chèn công thức nhanh chóng, Dãy, Biểu đồ và Hình ảnh; Mã hóa ô với mật khẩu; Tạo danh sách gửi thư và gửi email ...
  • 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 !
  • Nhóm bảng tổng hợp theo số tuần, ngày trong tuần và hơn thế nữa ... Hiển thị các ô đã mở khóa, đã khóa bởi các màu sắc khác nhau; Đánh dấu các ô có công thức / tênhữu ích. Cảm ơn !
tab kte 201905
  • 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 (17)
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
Để tạo bất kỳ kết hợp ngẫu nhiên nào, chúng ta có thể sử dụng
=INDEX($A$2:$A$4,RANDBETWEEN(1,3))&"-"&INDEX($B$2:$B$6,RANDBETWEEN(1,5))&"-"&INDEX($C$2:$C$5,RANDBETWEEN(1,4))
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 vì đã chia sẻ bài đăng này. Cảm ơn @Balaji rất nhiều vì công thức của anh ấy / cô ấy
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 KHÔNG BIẾT CẢM ƠN BẠN BAO NHIÊU CHO ĐỦ! ĐÃ 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
HOw để làm gì công thức dưới đây cho 5 cột? Cố gắng tìm ra nhưng nó đưa ra lỗi
=IFERROR(INDEX($A$2:$A$4,INT((ROW(1:1)-1)/((COUNTA($B$2:$B$6)*(COUNTA($C$2:$C$5)))))+1)&"-"&INDEX($B$2:$B$6,MOD(INT((ROW(1:1)-1)/COUNTA($C$2:$C$5)),COUNTA($B$2:$B$6))+1)&"-"&INDEX($C$2:$C$5,MOD((ROW(1:1)-1),COUNTA($C$2:$C$5))+1),"")
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, Nikhil, Để nhận được tất cả các kết hợp từ 5 cột, mã VBA bên dưới có thể giúp bạn, vui lòng thay đổi tham chiếu ô đối với dữ liệu của bạn.
Danh sách phụAllCombination ()
'Cập nhật bởi Extendoffice
Làm mờ xDRg1, xDRg2, xDRg3, xDRg4, xDRg5 As Range
Dim xRg theo phạm vi
Làm mờ xStr dưới dạng chuỗi
Làm mờ xFN1, xFN2, xFN3, xFN4, xFN5 dưới dạng số nguyên
Làm mờ xSV1, xSV2, xSV3, xSV4, xSV5 dưới dạng chuỗi
Đặt xDRg1 = Range ("A2: A7") 'Dữ liệu cột đầu tiên
Đặt dữ liệu cột thứ hai của xDRg2 = Range ("B2: B7") '
Đặt xDRg3 = Range ("C2: C7") 'Dữ liệu cột thứ ba
Đặt dữ liệu cột thứ tư của xDRg4 = Range ("D2: D7") '
Đặt dữ liệu cột thứ năm của xDRg5 = Range ("E2: E7")
xStr = "-" 'Dấu phân cách
Đặt ô đầu ra xRg = Range ("H2") '
Đối với xFN1 = 1 Đến xDRg1.Count
xSV1 = xDRg1.Item (xFN1) .Text
Đối với xFN2 = 1 Đến xDRg2.Count
xSV2 = xDRg2.Item (xFN2) .Text
Đối với xFN3 = 1 Đến xDRg3.Count
xSV3 = xDRg3.Item (xFN3) .Text
Đối với xFN4 = 1 Đến xDRg4.Count
xSV4 = xDRg4.Item (xFN4) .Text
Đối với xFN5 = 1 Đến xDRg5.Count
xSV5 = xDRg5.Item (xFN5) .Text
xRg.Value = xSV1 & xStr & xSV2 & xStr & xSV3 & xStr & xSV4 & xStr & xSV5
Đặt xRg = xRg.Offset (1, 0)
Sau
Sau
Sau
Sau
Sau
End SubXin vui lòng cố gắng, hy vọng nó có thể giúp 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
Xin chào skyyang, tôi đã thay đổi mã cho 7 cuộn, nhưng thấy Excel chỉ có 1,048,576 hàng, mã VBA không thể cung cấp tất cả các kết hợp. Bạn có biết cách tôi có thể tiếp tục trên các cột khác không? Tôi nghĩ mã này - Đặt xRg = xRg.Offset (1, 0) cần thiết để thay đổi
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 skyyang, tôi đã thay đổi mã cho 7 cuộn, nhưng thấy Excel chỉ có 1,048,576 hàng, mã VBA không thể cung cấp tất cả các kết hợp.
Bạn có ý tưởng về cách tôi có thể tiếp tục trên các cột khác không?
Tôi nghĩ mã này - Đặt xRg = xRg.Offset (1, 0)
cần thiết để thay đổi 
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
=IFERROR(INDEX($A$2:$A$5,INT((ROW(1:1)-1)/((COUNTA($B$2:$B$3)*(COUNTA($C$2:$C$3)* (COUNTA($D$2:$D$4)* (COUNTA($E$2:$E$6)* (COUNTA($H$2:$H$6)* (COUNTA($G$2:$G$6)* (COUNTA($H$2:$H$6))))))))))+1)&"-"&INDEX($B$2:$B$3,MOD(INT((ROW(1:1)-1)/COUNTA($C$2:$C$3)),COUNTA($B$2:$B$3))+1)&"-" &INDEX($C$2:$C$3,MOD(INT((ROW(1:1)-1)/COUNTA($D$2:$D$4)),COUNTA($C$2:$C$3))+1)&"-" &INDEX($D$2:$D$4,MOD(INT((ROW(1:1)-1)/COUNTA($E$2:$E$6)),COUNTA($D$2:$D$4))+1)&"-" &INDEX($E$2:$E$6,MOD(INT((ROW(1:1)-1)/COUNTA($F$2:$F$6)),COUNTA($E$2:$E$6))+1)&"-" &INDEX($F$2:$F$6,MOD(INT((ROW(1:1)-1)/COUNTA($G$2:$G$6)),COUNTA($F$2:$F$6))+1)&"-" &INDEX($G$2:$G$6,MOD(INT((ROW(1:1)-1)/COUNTA($H$2:$H$6)),COUNTA($G$2:$G$6))+1)&"-"&INDEX($H$2:$H$6,MOD((ROW(1:1)-1),COUNTA($H$2:$H$6))+1),"")
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 cần công thức này cho 4 cột
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 bạn rất nhiều. Chính xác những gì tôi cần :-)))
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 bạn rất nhiều cho mã này. Tôi đã sửa đổi mã cho số lượng cột tôi cần (25). Thanks,
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Mã HiIn VBA tôi đã sử dụng bốn cột và phạm vi của cột là E2: E75, B2: B267, C2: C195 & D2: D267. Phạm vi đưa ra là J2. Trong trường hợp này, kết quả đưa ra đã vượt quá giới hạn hàng. Vui lòng giúp đỡ để giải quyết lỗi
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 Vì vậy, đây là mã cho 9 cột: ')
Danh sách phụAllCombination ()
'Cập nhật bởi Extendoffice
Làm mờ xDRg1, xDRg2, xDRg3, xDRg4, xDRg5, xDRg6, xDRg7, xDRg8, xDRg9 As Range
Dim xRg As Range
Làm mờ xStr dưới dạng chuỗi
Làm mờ xFN1, xFN2, xFN3, xFN4, xFN5, xFN6, xFN7, xFN8, xFN9 as Integer
Làm mờ xSV1, xSV2, xSV3, xSV4, xSV5, xSV6, xSV7, xSV8, xSV9 dưới dạng chuỗi
Đặt xDRg1 = Range ("A2: A3") 'Dữ liệu cột đầu tiên
Đặt dữ liệu cột thứ hai của xDRg2 = Range ("B2: B3") '
Đặt xDRg3 = Range ("C2: C10") 'Dữ liệu cột thứ ba
Đặt xDRg4 = Range ("D2: D2") 'Dữ liệu cột thứ ba
Đặt xDRg5 = Range ("E2: E3") 'Dữ liệu cột thứ ba
Đặt xDRg6 = Range ("F2: F3") 'Dữ liệu cột thứ ba
Đặt xDRg7 = Range ("G2: G4") 'Dữ liệu cột thứ ba
Đặt xDRg8 = Range ("H2: H3") 'Dữ liệu cột thứ ba
Đặt xDRg9 = Range ("I2: I3") 'Dữ liệu cột thứ ba
xStr = "-" 'Dấu phân cách
Đặt ô đầu ra xRg = Range ("K2") '
Đối với xFN1 = 1 Đến xDRg1.Count
xSV1 = xDRg1.Item (xFN1) .Text
Đối với xFN2 = 1 Đến xDRg2.Count
xSV2 = xDRg2.Item (xFN2) .Text
Đối với xFN3 = 1 Đến xDRg3.Count
xSV3 = xDRg3.Item (xFN3) .Text
Đối với xFN4 = 1 Đến xDRg4.Count
xSV4 = xDRg4.Item (xFN4) .Text
Đối với xFN5 = 1 Đến xDRg5.Count
xSV5 = xDRg5.Item (xFN5) .Text
Đối với xFN6 = 1 Đến xDRg6.Count
xSV6 = xDRg6.Item (xFN6) .Text
Đối với xFN7 = 1 Đến xDRg7.Count
xSV7 = xDRg7.Item (xFN7) .Text
Đối với xFN8 = 1 Đến xDRg8.Count
xSV8 = xDRg8.Item (xFN8) .Text
Đối với xFN9 = 1 Đến xDRg9.Count
xSV9 = xDRg9.Item (xFN9) .Text
xRg.Value = xSV1 & xStr & xSV2 & xStr & xSV3 & xStr & xSV4 & xStr & xSV5 & xStr & xSV6 & xStr & xSV7 & xStr & xSV8 & xStr & xSV9
Đặt xRg = xRg.Offset (1, 0)
Sau
Sau
Sau
Sau
Sau
Sau
Sau
Sau
Sau
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
조합 의 나열 을 "단어 - 단어 - 단어" 순 으로 나열 하는 법 은 이해 했습니다.
그런데 "단어" 가 아니라 숫자 일 경우,
즉 숫자 의 조합 을 단순 나열 이 아닌 덧셈 이나 곱셈 으로 적용 하려면 어떻게 해야하는지 알 수?

'VBA 코드: 3 개 또는 여러 열의 모든 조합 생성' 에서 말이죠.

"1-1-1" 로 엑셀 에 결과 값 이 표기 되는 것이 아니고

-1 로 엑셀 에 표기 될 수 있게 말입니다.
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úc mừng, bình luận faire pour que chaque valeurs soient patées dans une colonne differencee en non séparées par un tiret?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Esse código me ajudou froas e combinou um item de cada coluna entre elas. Mas também Preiso tổ hợp dois itens de cada coluna, sem repetição. Alguém poderia me ajudar nisso?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Esse código me ajudou froas e combinou um item de cada coluna entre elas. Mas também Preiso tổ hợp dois itens de cada coluna, sem repetição. Alguém poderia me ajudar nisso?
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