Ma trận với Excel

Liên hệ QC

voduyminh0504

Thành viên chính thức
Tham gia
11/2/15
Bài viết
51
Được thích
12
Chào các bạn
Tôi không rõ bài toán tôi đang cần giải là VBA hay Excel
Tôi có một chuỗi 20 giá trị trong 20 cột (như từ cột F đến Y trong file đính kèm)
Tôi đang cần kết hợp 4 giá trị lại với nhau trong tất cả 20 giá trị đó với tất cả khả năng theo cách mà nó hiển thị như trong cột A, B, C, và D (để merge lại trong cột E).

Rất mong có bạn nào giúp giùm với cái ma trận này.
Nhân tiện, có thể bạn cho biết giúp là có bao nhiêu khả năng kết hợp (có thể khá nhiều), và một giá trị có bao nhiêu khả năng kết hợp với các giá trị khác.

Xin cám ơn các bạn trước.
 

File đính kèm

  • Ma trận.xlsx
    12.5 KB · Đọc: 9
Chào các bạn
Tôi không rõ bài toán tôi đang cần giải là VBA hay Excel
Tôi có một chuỗi 20 giá trị trong 20 cột (như từ cột F đến Y trong file đính kèm)
Tôi đang cần kết hợp 4 giá trị lại với nhau trong tất cả 20 giá trị đó với tất cả khả năng theo cách mà nó hiển thị như trong cột A, B, C, và D (để merge lại trong cột E).

Rất mong có bạn nào giúp giùm với cái ma trận này.
Nhân tiện, có thể bạn cho biết giúp là có bao nhiêu khả năng kết hợp (có thể khá nhiều), và một giá trị có bao nhiêu khả năng kết hợp với các giá trị khác.

Xin cám ơn các bạn trước.
Với "tất cả các khả năng" thì chưa hiểu rõ đầu bài, nếu chỉ là tổ hợp chập 4 của 20 thì có thể thử code dưới đây.
Số tổ hợp dùng hàm = combin(20,4)= 4845

Mã:
Option Explicit

Sub abcd()
Dim nguon
Dim tam(3)
Dim i, j, k, x, y, z
Dim kq
nguon = Sheet1.Range("F2:Y2")
k = Application.Combin(UBound(nguon, 2), 4)
ReDim kq(1 To k, 1 To 1)
k = UBound(nguon, 2)
For i = 1 To k - 3
    tam(0) = nguon(1, i)
    For j = i + 1 To k - 2
        tam(1) = nguon(1, j)
        For x = j + 1 To k - 1
            tam(2) = nguon(1, x)
            For y = x + 1 To k
                tam(3) = nguon(1, y)
                z = z + 1
                kq(z, 1) = Join(tam)
            Next y
        Next x
    Next j
Next i
Sheet1.Range("E5").Resize(UBound(kq), 1).Clear
Sheet1.Range("E5").Resize(UBound(kq), 1) = kq
End Sub
 
Upvote 0
Chào bạn CHAOQUAY
Cám ơn bạn rất nhiều.
Tôi vừa thừ qua thì rất khả thi.
Cái code của bạn giúp cho công việc của tôi nhẹ đi rất nhiều.
Tôi đã vật lộn với nó suốt hai ngày qua mà chẳng giải quyết được gì.
Một lần nữa, rất cám ơn bạn, đặc biệt là bạn đã phản hồi rất nhanh.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom