Saltar al contenido

Combinaciones sin repetición


Invitado Cacho R

Recommended Posts

Hola! Amigos.

Las combinaciones sin repetición (o combinaciones, "a secas") de n elementos distintos tomados de a m, son los distintos grupos de m elementos que se pueden formar con los n elementos que tenemos.

Los grupos no se diferencian entre sí por el orden de colocación de sus elementos, sino porque sus elementos integrantes no son los mismos.

Dicho lo anterior, adjunto una forma de obtener todas las combinaciones posibles de "n" elementos tomados de a "m".

El límite de combinaciones posibles para este modelo es el total de filas de la hoja.

Sin embargo, y de ser necesario, es posible modificar -ligeramente- la macro para "estirar" ese límite a la cantidad total de celdas de la hoja, menos 4 columnas.

Saludos, Cacho R. :victorious:

Combinaciones NxM.rar

Enlace a comentario
Compartir con otras webs

  • 4 weeks later...

Saludos Cacho R, simplemente Genial, Genial y Genial, es increíble que el aporte lo colgaras desde el día 16 de septiembre y no me haya dado cuenta hasta hoy, a mi en particular me servirá de muchísimo, entre otras cosas por la oportunidad de escoger el tamaño de las combinaciones, de hecho (si me lo permites) pues abriré un tema sobre algo que necesito que se parece mucho a tu gran aporte, lo que no se si has visto alguno de mis post, mi experiencia de Excel es muy, muy baja.

Cacho R te estoy eternamente agradecido por este aporte, de seguro podre trabajar mucho con el.

Un Cordial Saludo

Lázaro

Enlace a comentario
Compartir con otras webs

  • 8 months later...
  • 4 months later...

Muy Buenas me ha sido muy útil esta información, y lo agradezco enormemente. mas aún tengo una duda y me gustaría mucho si pudiera solucionarla, es que me gustaria usar estas combinaciones pero permitiendo algunas repeticiones pero restringidas. Me explico: necesito usar este macro para extraer todas las posibles combinaciones de 5 X 3 pero permitiendo que se repitan sólo dos de las tres. Ejemplo dados 1,2,3,4,5. hallar las combinaciones en ternas 123,124,125...etc pero permitiendo que puedan salir 112, o 225, etc. Espero haber sido lo sificientemente claro de ante mano les doy las gracias si es posible encontrar solución ha esta circunstancia.

Enlace a comentario
Compartir con otras webs

  • 2 months later...
  • 3 months later...

Hola:

Con el permiso del Gran Cacho, me he atrevido a modificar su macro para que sea capaz de soportar un nº prácticamente ilimitado de combinaciones. (Nº total de elementos * Nº de elementos de cada combinación = 17.000.000.000 Aprox).

He conseguido una velocidad razonablemente soportable. (1.000.000 combinaciones/minuto en un proceso de 45 elementos tomados de 6 en 6).

Saludos

Combinaciones CACHO_ R II.zip

Enlace a comentario
Compartir con otras webs

Hola de nuevo:

A base de juntar los elementos de cada combinación en una sola columna, he conseguido aumentar el rendimiento en un 40%, es decir, en el ejemplo del post anterior se ha pasado de 1.000.000 combinaciones/minuto a 1.400.000 combinaciones/minuto.

También he añadido la posibilidad de informar el número máximo de filas en que queremos obtener el resultado.

Hasta la próxima.

Combinaciones CACHO_ R III.zip

Enlace a comentario
Compartir con otras webs

  • 1 month later...

Hola:

Te subo la versión 2003 a ver si tienes mas suerte, ya está parámetrizado para combinar 49 elementos tomados de 6 en 6.

Solo has de pulsar el botón, ................. si se deja.

En mi PC ha tardado un total de 23 minutos para generar los casi 14.000.000 de combinaciones.

Saludos

Combinaciones CACHO_ R III.xls

Enlace a comentario
Compartir con otras webs

  • 1 month later...

Hola Macro Antonio te pido el favor que me colabores, necesito el mismo macro de Cacho pero que tenga mas filas tal cual como el de el... sinceramente es que el qu elaboraste es muy eficiente pero no me permite realizar operaciones entre los datos de cada combinación y es para esto que lo necesito.

Agradezco tu amable y genial colaboración

Enlace a comentario
Compartir con otras webs

Excelente aporte! En mi maquina solo tomo 24 segundos con la tercera version!

Solo como curiosidad y saliendome del tema principal de este foro... en ruby esto se pudo haber echo asi:


inicio = Time.now #se toma el tiempo de inicio
datos = (1..33).to_a #se crea un arrar con los numeros del 1 al 33
datos.combination(6) {|x| puts x.join(",")} #se mandan a imprimir las combinaciones (6 elementos en este caso)
fin = Time.now #se toma el tiempo de termino
puts inicio, fin #se imprimen los tiempos
[/PHP]

Eso si, es muy lento (tanto que me desespere y detuve el script), pero... si se redirecciona la salida a un archivo solo toma 10 segundos!

Saludos!

Enlace a comentario
Compartir con otras webs

  • 1 month later...

:glee:Heeey soy nuevo en esto, y cuando le doy al botón generar me dispara el error :loyal:

'' Se ha producido el error '1004' en tiempo de ejecución ''

'' error definido por la aplicación o el objeto ''

por favor alguien me podría ayudar????

gracias de ante manos:encouragement:

Enlace a comentario
Compartir con otras webs

  • 9 months later...
  • 3 months later...

Alguien me puede decir como hacer lo mismo que Cacho pero en orden. Es decir:

Sin Orden-> Para 30 valores agrupándolos de 3 en 3 y sin repetir me devuelve 4.060 objetos.

En Orden -> Para 30 valores agrupándolos de 3 en 3 y sin repetir me devuelve 24.360 objetos.

Quiero crear la de "En Orden"

Gracias y un saludo!

Enlace a comentario
Compartir con otras webs

  • 1 year later...

para lo que yo necesito esta macro no veo la forma de retocarla, para que en B me deje meter la cantidad de numeros que yo quiera 5,6,8,20 ect...

Y bueno de paso poder darme la opcion de las combinaciones de los numeros agrupados en 3,4,5,6,8

Un Saludo.

Enlace a comentario
Compartir con otras webs

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 96 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Hola, Mejor que subas un archivo que contenga esas fórmulas, indicando qué resultados esperas conseguir. Así ayudas a quien quiera ayudarte; no le obligas a que reproduzca ese modelo, y de paso podrá ver cuál es el objetivo buscado con esa/s fórmula/s. Saludos,
    • Buenas noches quisiera hacer esta formula auto incremental    =SI(INDIRECTO("'Casos de Prueba'!I1")="Resultados Ciclo 1"; SI(CONTAR.SI(INDIRECTO("'Casos de Prueba'!I:I"); "OK")=0; 0; CONTAR.SI(INDIRECTO("'Casos de Prueba'!I:I"); "OK")); 0)      para que cada vez que copiase y pegase la celda con la formula  se incrementara la letra en este caso la I pasara a J ,como el numero perteneciente a Resultados Ciclo pasando en este caso del 1 al 2.   Tengo también esta formula =CONCATENAR("CP";TEXTO(MAX((SI((ESNUMERO(HALLAR("CP";A$1:A1)))*(A$1:A1<>"");VALOR(EXTRAE(A$1:A1;3;3));0))+1);"000")&" - "&B2) quisiera que no tuviera los 3 ceros si no que fuera por ejemplo CP1 y se fuera incrementando. Gracias un saludo.
    • Con el diseño así como lo tiene en su libro, una fórmula de BUSCARV con COINCIDIR debería ser de utilidad =C5*BUSCARV($C$1,Tabla1[#Todo],COINCIDIR($D5,Tabla1[#Encabezados],0)) Es con lo que participaría en su consulta. Lo que resta es definir que hacer si no encuentra la OT porque así como esta le devolvería error en ese caso, o si tiene condiciones que haya podido omitir también le afectarían el resultado.
    • He cambiado mi macro a este: Sub repetir() Set a = Sheets(ActiveSheet.Name) uf = a.Range("C" & Rows.Count).End(xlUp).Row 'ultima fila con datos ActiveCell.Select ActiveCell.Offset(1, 0).Select   'Application.OnTime Now + TimeValue("00:00:10"), "repetir", , True End If End Sub   Lo que no se es como detenerlo al llegar a la ultima fila con datos de la columna C. Muchas gracias
    • Buenas tardes a todos. Tengo un problema que preciso de vuestra ayuda.  Tengo que controlar los gastos de la oficina que trabajo y he de repartir unos gastos a % según una OT y unos tipos de gastos. Envío un archivo adjunto. Lo que necesito es que lo que aparece en la columna en amarillo lo haga automáticamente, teniendo en cuenta los datos de la tabla a la derecha. Por ejemplo, el primer gasto tiene una cuota de 1477 euros y teniendo en cuenta que es un gasto de tipo Común y que la OT es la 12810234, le corresponde un gasto de 605,57 euros ya que según la tabla de la derecha su % a imputar es de un 41%. ¿alguien me puede ayudar con la formula? He de añadir muchas más líneas y más hojas con el resto de OT y en el futuro cambiar más datos, así que necesito automatizarlo con una formula Excel. Gracias. Control de gastos.xlsx
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.