Encuentre una lista exhaustiva de matrices unidimensionales usando VBA
A continuación se muestra un fragmento de código VBA que utiliza un método recursivo para generar todas las combinaciones posibles. El código generará todas las combinaciones de longitud de 1 a 20 en myArr. Tenga en cuenta que este enfoque exhaustivo puede llevar mucho tiempo cuando la matriz es grande.
ChildrenGenerateCombinations()
Atenuar myArr(1 a 20) como entero
Atenuar i como entero
'Rellene la matriz myArr, usando los datos de muestra aquí
For i = 1 To 20
myArr(i) = i
Siguiente i
' Bucle a genera todas las combinaciones de longitudes de 1 a 20
Para i = 1 a 20
Debug.Print "Combinación de longitudes " & i & ":"
' GenerateCombinationsHelper myArr, i, ""
Siguiente i
End Sub
Sub GenerateCombinationsHelper(myArr como variante, k como entero, resultado como cadena)
Atenuar i como entero
Atenuar j como entero
Si k = 0 entonces
Debug.p>
Si InStr(resultado, CStr(myArr(i))) = 0 Then
GenerateCombinationsHelper myArr, k - 1, resultado & " " &myArr(i)
Finalizar si p>
Siguiente i
End If
End Sub
Ejecute el código
El código primero llena la matriz myArr, luego recorra todas las combinaciones de longitud de 1 a 20. Para cada longitud, el código llama a la función GenerateCombinationsHelper para generar todas las combinaciones posibles. Primero verifica si k elementos ya están seleccionados y, de ser así, genera el resultado; de lo contrario, se llama a sí mismo de forma recursiva, selecciona un elemento que aún no ha sido seleccionado, lo agrega al resultado y luego continúa seleccionando el siguiente elemento. La combinación resultante se pasa en el parámetro de resultado y se genera mediante Debug.Print.