anhhien0510
Thành viên mới

- Tham gia
- 7/4/11
- Bài viết
- 16
- Được thích
- 0
Mình có 1 bài toán như này, có 10 số từ 0,1,2... đến 9
câu hỏi mình đặt ra là mình chỉ lấy 8 số trong 10 số
Ví du: 0,1,2,3,4,5,6,7
0,1,2,3,4,5,7,8
0,1,2,3,4,5,8,9
..............
Vậy có hàm nào xuất ra tất cả các dãy mà lấy ra 8 số trong 10 số ko vậy? Mong ace chỉ giáo.
Có bác cho m hàm vba này mà m ko biết cách, bác nào biết chỉ m với
Private Sub Main(ByRef Arr, ByVal n As Long, ByVal Str As String, ByVal k As Long, ByRef Result, ByRef Index As Long)
For i = n To UBound(Arr, 1) - k + 1
If k = 1 Then
Index = Index + 1
Result(Index, 1) = Str & Arr(i, 1)
Else
Main Arr, i + 1, Str & Arr(i, 1), k - 1, Result, Index
End If
Next
End Sub
PHP:
Function LietKeToHop(ByVal Arr, ByVal k)
Dim Result() As String, n As Long
n = Application.WorksheetFunction.Combin(UBound(Arr, 1) - LBound(Arr, 1) + 1, k)
ReDim Result(1 To n, 1 To 1)
Main Arr, LBound(Arr, 1), "'", k, Result, 0
LietKeToHop = Result
End Function
PHP:
Sub Test()
Dim Arr(1 To 10, 1 To 1), KQ
For i = 1 To 10
Arr(i, 1) = i - 1
Next
KQ = LietKeToHop(Arr, 7)
[A1].Resize(UBound(KQ, 1)).Value = KQ
End Sub
câu hỏi mình đặt ra là mình chỉ lấy 8 số trong 10 số
Ví du: 0,1,2,3,4,5,6,7
0,1,2,3,4,5,7,8
0,1,2,3,4,5,8,9
..............
Vậy có hàm nào xuất ra tất cả các dãy mà lấy ra 8 số trong 10 số ko vậy? Mong ace chỉ giáo.
Có bác cho m hàm vba này mà m ko biết cách, bác nào biết chỉ m với
Private Sub Main(ByRef Arr, ByVal n As Long, ByVal Str As String, ByVal k As Long, ByRef Result, ByRef Index As Long)
For i = n To UBound(Arr, 1) - k + 1
If k = 1 Then
Index = Index + 1
Result(Index, 1) = Str & Arr(i, 1)
Else
Main Arr, i + 1, Str & Arr(i, 1), k - 1, Result, Index
End If
Next
End Sub
PHP:
Function LietKeToHop(ByVal Arr, ByVal k)
Dim Result() As String, n As Long
n = Application.WorksheetFunction.Combin(UBound(Arr, 1) - LBound(Arr, 1) + 1, k)
ReDim Result(1 To n, 1 To 1)
Main Arr, LBound(Arr, 1), "'", k, Result, 0
LietKeToHop = Result
End Function
PHP:
Sub Test()
Dim Arr(1 To 10, 1 To 1), KQ
For i = 1 To 10
Arr(i, 1) = i - 1
Next
KQ = LietKeToHop(Arr, 7)
[A1].Resize(UBound(KQ, 1)).Value = KQ
End Sub