Note: The other languages of the website are Google-translated. Back to English

¿Cómo generar todas las combinaciones de 3 o múltiples columnas en Excel?

Supongamos que tengo 3 columnas de datos, ahora quiero generar o enumerar todas las combinaciones de los datos en estas 3 columnas como se muestra a continuación. ¿Tiene algún buen método para resolver esta tarea en Excel?

Genere todas las combinaciones basadas en 3 columnas de datos usando una fórmula

Genere todas las combinaciones basadas en 3 o múltiples columnas de datos usando el código VBA

Genere todas las combinaciones basadas en 3 o múltiples columnas de datos usando una característica asombrosa


Genere todas las combinaciones basadas en 3 columnas de datos usando una fórmula

La siguiente fórmula larga puede ayudar a enumerar todas las combinaciones de 3 columnas, haga lo siguiente:

1. Por favor, haga clic en una celda donde generar el resultado, y luego copie y pegue la siguiente fórmula en ella:

=IFERROR(INDEX($A$2:$A$4,INT((ROW(1:1)-1)/((COUNTA($B$2:$B$6)*(COUNTA($C$2:$C$5)))))+1)&"-"&INDEX($B$2:$B$6,MOD(INT((ROW(1:1)-1)/COUNTA($C$2:$C$5)),COUNTA($B$2:$B$6))+1)&"-"&INDEX($C$2:$C$5,MOD((ROW(1:1)-1),COUNTA($C$2:$C$5))+1),"")

Nota:: En esta fórmula: A2: A4, B2: B6, C2: C5 son los rangos de datos que desea utilizar.

2. Luego, arrastre el controlador de relleno hacia las celdas hasta que se muestren las celdas en blanco, lo que significa que se han enumerado todas las combinaciones de las 3 columnas, vea la captura de pantalla:


Genere todas las combinaciones basadas en 3 o múltiples columnas de datos usando el código VBA

La fórmula larga anterior es algo difícil de usar, si hay que usar datos de varias columnas, será problemático modificarla. Aquí, presentaré un código VBA para tratarlo rápidamente.

1. Mantenga pulsado el ALT + F11 teclas para abrir el Microsoft Visual Basic para aplicaciones ventana.

2. Hacer clic recuadro > Móduloy pegue el siguiente código en la ventana del módulo.

Código VBA: genere todas las combinaciones de 3 o múltiples columnas

Sub ListAllCombinations()
'Updateby Extendoffice
Dim xDRg1, xDRg2, xDRg3 As Range
Dim xRg  As Range
Dim xStr As String
Dim xFN1, xFN2, xFN3 As Integer
Dim xSV1, xSV2, xSV3 As String
Set xDRg1 = Range("A2:A4")  'First column data
Set xDRg2 = Range("B2:B6")  'Second column data
Set xDRg3 = Range("C2:C5")  'Third column data
xStr = "-"   'Separator
Set xRg = Range("E2")  'Output cell
For xFN1 = 1 To xDRg1.Count
    xSV1 = xDRg1.Item(xFN1).Text
    For xFN2 = 1 To xDRg2.Count
        xSV2 = xDRg2.Item(xFN2).Text
      For xFN3 = 1 To xDRg3.Count
        xSV3 = xDRg3.Item(xFN3).Text
        xRg.Value = xSV1 & xStr & xSV2 & xStr & xSV3
        Set xRg = xRg.Offset(1, 0)
       Next
    Next
Next
End Sub

Nota:: En el código anterior, A2: A4, B2: B6, C2: C5 son el rango de datos que desea utilizar, E2 es la celda de salida en la que desea ubicar los resultados. Si desea obtener todas las combinaciones de más columnas, cambie y agregue otros parámetros al código según sus necesidades.

3. Entonces presione F5 clave para ejecutar este código, y todas las combinaciones de las 3 o múltiples columnas se generarán a la vez, vea la captura de pantalla:


Genere todas las combinaciones basadas en 3 o múltiples columnas de datos usando una característica asombrosa

Si tiene Kutools for Excel, con su poderoso Listar todas las combinaciones función, puede enumerar todas las combinaciones de varias columnas de forma rápida y sencilla.

Consejos:Para aplicar esto Listar todas las combinaciones función, en primer lugar, debe descargar la Kutools for Excely, a continuación, aplique la función de forma rápida y sencilla.

Después de instalar Kutools for Excel, haz lo siguiente:

1. Hacer clic Kutools > recuadro > Listar todas las combinaciones, ver captura de pantalla:

2. En la Listar todas las combinaciones cuadro de diálogo, especifique los datos de las columnas y los separadores para enumerar las combinaciones como se muestra en la siguiente captura de pantalla:

3. Después de configurar los datos y el separador, haga clic en Ok , en el siguiente cuadro de aviso, seleccione una celda para ubicar el resultado, vea la captura de pantalla:

4. Y luego, haga clic en OK botón, todas las combinaciones se han generado inmediatamente como se muestra a continuación:

¡Haga clic para descargar Kutools para Excel y prueba gratuita ahora!


  • Barra de súper fórmula (edite fácilmente varias líneas de texto y fórmulas); Diseño de lectura (leer y editar fácilmente un gran número de celdas); Pegar en rango filtrado...
  • Combinar celdas / filas / columnas y conservación de datos; Contenido de celdas divididas; Combinar filas duplicadas y suma / promedio... Prevenir celdas duplicadas; Comparar rangos...
  • Seleccione Duplicado o Único Filas; Seleccionar filas en blanco (todas las celdas están vacías); Super Find y Fuzzy Find en muchos libros de trabajo; Selección aleatoria ...
  • Copia exacta Varias celdas sin cambiar la referencia de la fórmula; Crear referencias automáticamente a varias hojas; Insertar viñetas, Casillas de verificación y más ...
  • Fórmulas favoritas e insertar rápidamente, Rangos, gráficos e imágenes; Cifrar celdas con contraseña; Crear lista de distribución y enviar correos electrónicos ...
  • Extraer texto, Agregar texto, Eliminar por posición, Quitar espacio; Crear e imprimir subtotales de paginación; Convertir entre contenido de celdas y comentarios...
  • Súper filtro (guardar y aplicar esquemas de filtros a otras hojas); Orden avanzado por mes / semana / día, frecuencia y más; Filtro especial en negrita, cursiva ...
  • Combinar libros y hojas de trabajo; Combinar tablas basadas en columnas clave; Dividir datos en varias hojas; Conversión por lotes de xls, xlsx y PDF...
  • Agrupación de tablas dinámicas por número de semana, día de la semana y más ... Mostrar celdas bloqueadas y desbloqueadas por diferentes colores; Resalte las celdas que tienen fórmula / nombre...
pestaña kte 201905
  • Habilite la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
  • Abra y cree varios documentos en nuevas pestañas de la misma ventana, en lugar de en nuevas ventanas.
  • ¡Aumenta su productividad en un 50% y reduce cientos de clics del mouse todos los días!
officetab parte inferior
Comentarios (17)
Aún no hay calificaciones. ¡Sé el primero en calificar!
Este comentario fue minimizado por el moderador en el sitio
Para generar cualquier combinación aleatoria podemos usar
=INDEX($A$2:$A$4,RANDBETWEEN(1,3))&"-"&INDEX($B$2:$B$6,RANDBETWEEN(1,5))&"-"&INDEX($C$2:$C$5,RANDBETWEEN(1,4))
Este comentario fue minimizado por el moderador en el sitio
Muchas gracias por compartir esta publicación. Muchas gracias a @Balaji por su fórmula
Este comentario fue minimizado por el moderador en el sitio
¡NO PUEDO AGRADECERTE LO SUFICIENTE! ME AHORRO MUCHO TIEMPO!
Este comentario fue minimizado por el moderador en el sitio
¿Cómo hacer la siguiente fórmula para 5 columnas? Tratando de averiguarlo pero está dando error
=IFERROR(INDEX($A$2:$A$4,INT((ROW(1:1)-1)/((COUNTA($B$2:$B$6)*(COUNTA($C$2:$C$5)))))+1)&"-"&INDEX($B$2:$B$6,MOD(INT((ROW(1:1)-1)/COUNTA($C$2:$C$5)),COUNTA($B$2:$B$6))+1)&"-"&INDEX($C$2:$C$5,MOD((ROW(1:1)-1),COUNTA($C$2:$C$5))+1),"")
Este comentario fue minimizado por el moderador en el sitio
Hola, Nikhil, para obtener todas las combinaciones de 5 columnas, puede que el siguiente código de VBA pueda ayudarlo, cambie las referencias de celda a sus datos.
Sub ListaTodasCombinaciones()
'Actualizar por Extendoffice
Dim xDRg1, xDRg2, xDRg3, xDRg4, xDRg5 como rango
Dim xRg como rango
Dim xStr como cadena
Dim xFN1, xFN2, xFN3, xFN4, xFN5 como entero
Dim xSV1, xSV2, xSV3, xSV4, xSV5 como cadena
Establezca xDRg1 = Rango ("A2: A7") 'Datos de la primera columna
Establecer xDRg2 = Rango ("B2: B7") 'Datos de la segunda columna
Establecer xDRg3 = Rango ("C2: C7") 'Datos de la tercera columna
Establecer xDRg4 = Rango ("D2: D7") 'Datos de la cuarta columna
Establecer xDRg5 = Rango ("E2: E7") 'Datos de la quinta columna
xStr = "-" 'Separador
Establecer xRg = Rango ("H2") 'Celda de salida
Para xFN1 = 1 Para xDRg1.Count
xSV1 = xDRg1.Item(xFN1).Texto
Para xFN2 = 1 Para xDRg2.Count
xSV2 = xDRg2.Item(xFN2).Texto
Para xFN3 = 1 Para xDRg3.Count
xSV3 = xDRg3.Item(xFN3).Texto
Para xFN4 = 1 Para xDRg4.Count
xSV4 = xDRg4.Item(xFN4).Texto
Para xFN5 = 1 Para xDRg5.Count
xSV5 = xDRg5.Item(xFN5).Texto
xRg.Valor = xSV1 & xStr & xSV2 & xStr & xSV3 & xStr & xSV4 & xStr & xSV5
Establecer xRg = xRg.Offset(1, 0)
Siguiente
Siguiente
Siguiente
Siguiente
Siguiente
End SubPor favor intente, ¡espero que pueda ayudarlo!
Este comentario fue minimizado por el moderador en el sitio
Hola skyyang, cambié el código para 7 rollos, pero al ver que Excel tiene solo 1,048,576 filas, el código VBA no puede dar todas las combinaciones. ¿Tienes una idea de cómo puedo continuar en otras columnas? Creo que este código: Establecer xRg = xRg.Offset (1, 0) necesitaba cambiar
Este comentario fue minimizado por el moderador en el sitio
Hola skyyang, cambié el código para 7 rollos, pero al ver que Excel tiene solo 1,048,576 filas, el código VBA no puede dar todas las combinaciones.
¿Tienes una idea de cómo puedo continuar en otras columnas?
Creo que este código - Establecer xRg = xRg.Offset(1, 0)
necesitaba cambiar 
Este comentario fue minimizado por el moderador en el sitio
=IFERROR(INDEX($A$2:$A$5,INT((ROW(1:1)-1)/((COUNTA($B$2:$B$3)*(COUNTA($C$2:$C$3)* (COUNTA($D$2:$D$4)* (COUNTA($E$2:$E$6)* (COUNTA($H$2:$H$6)* (COUNTA($G$2:$G$6)* (COUNTA($H$2:$H$6))))))))))+1)&"-"&INDEX($B$2:$B$3,MOD(INT((ROW(1:1)-1)/COUNTA($C$2:$C$3)),COUNTA($B$2:$B$3))+1)&"-" &INDEX($C$2:$C$3,MOD(INT((ROW(1:1)-1)/COUNTA($D$2:$D$4)),COUNTA($C$2:$C$3))+1)&"-" &INDEX($D$2:$D$4,MOD(INT((ROW(1:1)-1)/COUNTA($E$2:$E$6)),COUNTA($D$2:$D$4))+1)&"-" &INDEX($E$2:$E$6,MOD(INT((ROW(1:1)-1)/COUNTA($F$2:$F$6)),COUNTA($E$2:$E$6))+1)&"-" &INDEX($F$2:$F$6,MOD(INT((ROW(1:1)-1)/COUNTA($G$2:$G$6)),COUNTA($F$2:$F$6))+1)&"-" &INDEX($G$2:$G$6,MOD(INT((ROW(1:1)-1)/COUNTA($H$2:$H$6)),COUNTA($G$2:$G$6))+1)&"-"&INDEX($H$2:$H$6,MOD((ROW(1:1)-1),COUNTA($H$2:$H$6))+1),"")
Este comentario fue minimizado por el moderador en el sitio
necesito esta formula para 4 columnas
Este comentario fue minimizado por el moderador en el sitio
Muchas gracias. Exactamente lo que necesito :-)))
Este comentario fue minimizado por el moderador en el sitio
Muchas gracias por este código. He modificado el código por la cantidad de columna que necesito (25). Gracias,
Este comentario fue minimizado por el moderador en el sitio
Hola, en el código VBA, utilicé cuatro columnas y el rango de la columna es E2: E75, B2: B267, C2: C195 y D2: D267. El rango de salida es J2. En este caso, el resultado de salida superó el límite de fila. Por favor ayuda a resolver el error
Este comentario fue minimizado por el moderador en el sitio
Hola, este es un código para 9 columnas: ')
Sub ListaTodasCombinaciones()
'Actualizar por Extendoffice
Dim xDRg1, xDRg2, xDRg3, xDRg4, xDRg5, xDRg6, xDRg7, xDRg8, xDRg9 como rango
Dim xRg como rango
Dim xStr como cadena
Dim xFN1, xFN2, xFN3, xFN4, xFN5, xFN6, xFN7, xFN8, xFN9 como entero
Dim xSV1, xSV2, xSV3, xSV4, xSV5, xSV6, xSV7, xSV8, xSV9 como cadena
Establecer xDRg1 = Rango ("A2: A3") 'Datos de la primera columna
Establecer xDRg2 = Rango ("B2: B3") 'Datos de la segunda columna
Establecer xDRg3 = Rango ("C2: C10") 'Datos de la tercera columna
Establecer xDRg4 = Rango ("D2: D2") 'Datos de la tercera columna
Establecer xDRg5 = Rango ("E2: E3") 'Datos de la tercera columna
Establecer xDRg6 = Rango ("F2: F3") 'Datos de la tercera columna
Establecer xDRg7 = Rango ("G2: G4") 'Datos de la tercera columna
Establecer xDRg8 = Rango ("H2: H3") 'Datos de la tercera columna
Establecer xDRg9 = Range("I2:I3") 'Datos de la tercera columna
xStr = "-" 'Separador
Establecer xRg = Rango ("K2") 'Celda de salida
Para xFN1 = 1 Para xDRg1.Count
xSV1 = xDRg1.Item(xFN1).Texto
Para xFN2 = 1 Para xDRg2.Count
xSV2 = xDRg2.Item(xFN2).Texto
Para xFN3 = 1 Para xDRg3.Count
xSV3 = xDRg3.Item(xFN3).Texto
Para xFN4 = 1 Para xDRg4.Count
xSV4 = xDRg4.Item(xFN4).Texto
Para xFN5 = 1 Para xDRg5.Count
xSV5 = xDRg5.Item(xFN5).Texto
Para xFN6 = 1 Para xDRg6.Count
xSV6 = xDRg6.Item(xFN6).Texto
Para xFN7 = 1 Para xDRg7.Count
xSV7 = xDRg7.Item(xFN7).Texto
Para xFN8 = 1 Para xDRg8.Count
xSV8 = xDRg8.Item(xFN8).Texto
Para xFN9 = 1 Para xDRg9.Count
xSV9 = xDRg9.Item(xFN9).Texto
xRg.Value = xSV1 & xStr & xSV2 & xStr & xSV3 & xStr & xSV4 & xStr & xSV5 & xStr & xSV6 & xStr & xSV7 & xStr & xSV8 & xStr & xSV9
Establecer xRg = xRg.Offset(1, 0)
Siguiente
Siguiente
Siguiente
Siguiente
Siguiente
Siguiente
Siguiente
Siguiente
Siguiente
End Sub
Este comentario fue minimizado por el moderador en el sitio
조합의 나열을 "단어-단어-단어" 순으로 나열하는 법은 이해 했습니다.
그런데 "단어" 가 아니라 숫자일 경우,
¿?

'VBA 코드: 3 개 또는 여러 열의 모든 조합 생성' 에서 말이죠.

"1-1-1"

-1 로 엑셀에 표기될 수 있게 말입니다.
Este comentario fue minimizado por el moderador en el sitio
Bonjour, comentario faire pour que chaque valeurs soient placées dans une colonne differente en non separées par un tiret ?
Este comentario fue minimizado por el moderador en el sitio
Ese código me ajudou bastante e combinou um item de cada coluna entre elas. Mas também preciso combinar dois itens de cada coluna, sem repetição. Alguem podria me ajudar nisso?
Este comentario fue minimizado por el moderador en el sitio
Ese código me ajudou bastante e combinou um item de cada coluna entre elas. Mas também preciso combinar dois itens de cada coluna, sem repetição. Alguem podria me ajudar nisso?
No hay comentarios publicados aquí todavía
Deje sus comentarios
Publicar como invitado
×
Califica esta publicación:
0   Personajes
Ubicaciones sugeridas

Seguinos

Copyright © 2009 - www.extendoffice.com. | Reservados todos los derechos. Energizado por ExtendOffice, | Mapa del Sitio
Microsoft y el logotipo de Office son marcas comerciales o marcas comerciales registradas de Microsoft Corporation en los Estados Unidos y / o en otros países.
Protegido por Sectigo SSL