Xin giúp đỡ liệt kê chỉnh hợp của một dãy số cho trước n phần tử

Liên hệ QC

utquyen2011

Thành viên mới
Tham gia
28/8/12
Bài viết
9
Được thích
1
Nghề nghiệp
Chuyen vien CNTT
Liệt kê các giá trị chỉnh hợp củamột dãy số cho trước

Vi du:

Co 3 dieu kien A,B,C
Thì các gia tri có thể có là
A:Y ;B:Y;C:Y
A:Y;B:N;C:Y
A:Y;B:N;C:N
A:N;B:Y;C:N
A:N;B:Y;C:Y

A:N;B:N;C:N
A:Y;B:Y;C:N
A:N;N:N;C:Y
 

File đính kèm

  • To hop.xlsx
    8.5 KB · Đọc: 84
Lần chỉnh sửa cuối:
Sub GetString()
Const GPE12 As String = "ABC"
Dim j1 As Byte, J2 As Byte, J3 As Byte
For j1 = 1 To 3
For J2 = j1 To 3
For J3 = J2 To 3

With [A65500].End(xlUp).Offset(1)
.Value = Mid(GPE12, j1, 1) & Mid(GPE12, J2, 1) & Mid(GPE12, J3, 1) _

End With
Next J3, J2, j1
End Sub
 

File đính kèm

  • ex1 .xlsm
    19.7 KB · Đọc: 49
Lần chỉnh sửa cuối:
Upvote 0
Vì bạn cần vba nên mình nêu ý tưởng, có thể cách này chậm nhưng sẽ ra kết quả. Có n điều kiện, mỗi điều kiện có 2 khả năng nên số bộ số là 2^n. Bạn biến đổi các số từ 0 đến 2^n-1 sang dạng nhị phân. Với mỗi số nhị phân đó, những chữ số 1 thay bằng Y, chữ số 0 hoặc không có thì thay bằng N.
 
Upvote 0
Dear anh,Em có xem và tìm hiều rồi nhưng em không làm được giống yêu cầu nhu bên trên.Nhờ anh xem giup em với .
Em cám ơn anh nhiều ạ.
chỉnh hợp lặp chập k của n phần tử là
47f651834a888645cb42fe5ee9e7f6c9.png

3 phan tu thi 8 cap gia tri
4 phan tu thi 16 cap gia tri
 
Lần chỉnh sửa cuối:
Upvote 0
anh,mình có hàm addin cho yêu cầu này không a?Anh có thể gửi cho em tham khảo với được không ạ.
 
Upvote 0
Em có 1 yêu cầu là muốn liệt kê tất cả các giá trị chỉnh hợp củamột dãy số cho trước

Mng các anh chị giúp em với,em xin cám ơn rat nhiều.
Vi du:

Co 3 dieu kien A,B,C
Thì các gia tri có thể có là
A:Y ;B:Y;C:Y
A:Y;B:N;C:Y
A:Y;B:N;C:N
A:N;B:Y;C:N
A:N;B:Y;C:Y

A:N;B:N;C:N
A:Y;B:Y;C:N
A:N;N:N;C:Y
Bạn dùng công thức này cho ô C4 sau đó copy cho các ô còn lại
Mã:
=CHOOSE(MID(DEC2BIN(COLUMN(A$1)-1,3),ROW($A1),1)+1,"Y","N")
Lưu ý: Số 3 là số điều kiện của bạn. Bạn thay đổi cho phù hợp với nhu cầu.
 
Upvote 0
Một công thức khác, kéo xuống dưới và sang phải đến khi gặp toàn chữ Y:
Mã:
=IF(INT(DEC2BIN(COLUMN(A:A)-1)/POWER(10,ROW(1:1)-1))-INT(DEC2BIN(COLUMN(A:A)-1)/POWER(10,ROW(1:1)))*10=1,"Y","N")
 
Upvote 0
Bạn dùng công thức này cho ô C4 sau đó copy cho các ô còn lại
Mã:
=CHOOSE(MID(DEC2BIN(COLUMN(A$1)-1,3),ROW($A1),1)+1,"Y","N")
Lưu ý: Số 3 là số điều kiện của bạn. Bạn thay đổi cho phù hợp với nhu cầu.

Anh vui lòng cho em hỏi thêm tí nha anh:

Em có 1 bảng dữ liệu gồm N điều kiện,mỗi điều kiện có M giátrị.Excle có thể viết được công thức tổng quát các trường hợp có thể sảy ra chobảng điều kiện này được không ạ? Anh xemVí dụ cụ thể trong file đính kèm
 

File đính kèm

  • Tich de cac.xlsx
    9.8 KB · Đọc: 29
Upvote 0
Anh vui lòng cho em hỏi thêm tí nha anh:

Em có 1 bảng dữ liệu gồm N điều kiện,mỗi điều kiện có M giátrị.Excle có thể viết được công thức tổng quát các trường hợp có thể sảy ra chobảng điều kiện này được không ạ? Anh xemVí dụ cụ thể trong file đính kèm
Muốn bao nhiêu điều kiện cũng được, số giá trị của mỗi điều kiện khác nhau cũng chơi luôn.
 

File đính kèm

  • Tich de cac.xlsx
    24.7 KB · Đọc: 62
Upvote 0
Em test thay ket qua ok anh.
 
Lần chỉnh sửa cuối:
Upvote 0
Quay thì quay 2 bảng luôn cho công thức đỡ phức tạp.



sẵn tiện anh cho em hỏi chút về tổ hợp với
VD: em có 5 hàng đánh số 1,2,3,4,5. có hàm nào để xuất tổ hợp của 5 số số đó k a. cụ thể em muốn xuất ra: 12,13,14,15,23,24,25,34,35,45 mỗi cặp giá trị 1 ô
 
Upvote 0
sẵn tiện anh cho em hỏi chút về tổ hợp với
VD: em có 5 hàng đánh số 1,2,3,4,5. có hàm nào để xuất tổ hợp của 5 số số đó k a. cụ thể em muốn xuất ra: 12,13,14,15,23,24,25,34,35,45 mỗi cặp giá trị 1 ô
Bài này tôi chỉ có thể làm bằng VBA thôi.
 
Upvote 0
BUI.jpgLiệt kê danh sách Tổ hợp tạm cách này coi ổn không, hơi lằng nhằng chút. Cột A liệt kê tất cả phần từ 1 đến 5 (ví dụ A2:A6). Tìm 1 ô trống bất kỳ, tính số lượng tổ hợp chập 2 của 5 phần tử, gõ =COMBIN(5,2) ra kết quả 10, xóa đi. Nhớ sô 10 này để điền vào cột thứ B số thứ tự 1-10. Tiếp theo, cột C và D quét chọn 2 cột kéo xuống 10 dòng cho vừa bằng với 10 dòng của số thứ tự, tại ô đầu tiên của khối này nhập vào công thức vba =Combinations(A2:A6,2) Ctrl+Shift+Enter để kết thúc, sẽ thấy hiện ra tất cả kết quả chưa ghép cặp của A2:A6 trong 2 cột C và D. Cuối cùng chỉ việc sang cột E gõ vào công thức ghép kết quả cột C D bằng ký hiệu & là xong
Bài đã được tự động gộp:

Mã:
Public result() As Variant
Function Combinations(rng As Range, n As Single)
rng1 = rng.Value
ReDim result(n - 1, 0)
Call Recursive(rng1, n, 1, 0)
ReDim Preserve result(UBound(result, 1), UBound(result, 2) - 1)
Combinations = Application.Transpose(result)
End Function
Function Recursive(r As Variant, c As Single, d As Single, e As Single)
Dim f As Single
For f = d To UBound(r, 1)
result(e, UBound(result, 2)) = r(f, 1)
If e = (c - 1) Then
ReDim Preserve result(UBound(result, 1), UBound(result, 2) + 1)
For g = 0 To UBound(result, 1)
result(g, UBound(result, 2)) = result(g, UBound(result, 2) - 1)
Next g
Else
Call Recursive(r, c, f + 1, e + 1)
End If
Next f
End Function
 

File đính kèm

  • BUI.jpg
    BUI.jpg
    60.4 KB · Đọc: 15
Upvote 0
Web KT

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

Back
Top Bottom