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

¿Cómo apilar rápidamente varias columnas en una columna en Excel?

en Excel, la función Texto a columnas puede dividir una celda en varias columnas según el delimitador, pero ¿hay alguna forma de apilar varias columnas en una columna como se muestra a continuación? En este artículo, presentaré algunos trucos para resolver esta tarea rápidamente.
doc apilar columnas a una 1

Apila varias columnas en una con fórmula

Apila varias columnas en una con VBA

Apila varias columnas en una con Transform Range buena idea3


Apila varias columnas en una con fórmula

1. Seleccione el rango que desea apilar y vaya a la Nombre de buzón para darle un nombre a este rango y presione Enviar llave. Ver captura de pantalla:
doc apilar columnas a una 2

2. Luego seleccione una celda en blanco donde desea colocar los resultados, ingrese esta fórmula =INDEX(MyData,1+INT((ROW(A1)-1)/COLUMNS(MyData)),MOD(ROW(A1)-1+COLUMNS(MyData),COLUMNS(MyData))+1), prensa Enter y arrastre el controlador de relleno hacia abajo hasta que aparezca un error. Ver captura de pantalla:
doc apilar columnas a una 3

En la fórmula, MyData es el nombre del rango que ha especificado en el paso 1.

Apila varias columnas en una con VBA

Aquí hay un código VBA que también puede ayudarlo.

1. Prensa Alt + F11 teclas para mostrar Microsoft Visual Basic para aplicaciones ventana.

2. Hacer clic en recuadro > Módulo, pegue el código siguiente en el Módulo.

VBA: apila columnas a una

Sub ConvertRangeToColumn()
'UpdatebyExtendoffice
Dim Range1 As Range, Range2 As Range, Rng As Range
Dim rowIndex As Integer
xTitleId = "KutoolsforExcel"
Set Range1 = Application.Selection
Set Range1 = Application.InputBox("Source Ranges:", xTitleId, Range1.Address, Type:=8)
Set Range2 = Application.InputBox("Convert to (single cell):", xTitleId, Type:=8)
rowIndex = 0
Application.ScreenUpdating = False
For Each Rng In Range1.Rows
    Rng.Copy
    Range2.Offset(rowIndex, 0).PasteSpecial Paste:=xlPasteAll, Transpose:=True
    rowIndex = rowIndex + Rng.Columns.Count
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

doc apilar columnas a una 4

3. Prensa F5 para ejecutar el código, aparece un cuadro de diálogo para seleccionar los datos de origen y hacer clic en OK, para seleccionar una celda para colocar los resultados. Ver captura de pantalla:
doc apilar columnas a una 5

4. Hacer clic en OK. Ahora las columnas se han apilado en una columna.
doc apilar columnas a una 6


Apila varias columnas en una con Transform Range

Aplicar Kutools for Excel, Transformar rango La utilidad también puede ayudarlo a resolver rápidamente este problema.

Kutools for Excel, con más de 300 funciones prácticas, facilita su trabajo. 

Después instalación gratuita Kutools para Excel, haga lo siguiente:

1. Seleccione los datos de las columnas que usa y haga clic en Kutools > Gama de Colores > Transformar rango. Ver captura de pantalla:
doc apilar columnas a una 8

2. En el Transformar rango diálogo, comprobar Rango a una sola columna opción, y haga clic Ok, luego seleccione una celda para colocar los resultados. Ver captura de pantalla:
doc apilar columnas a una 9

3. Hacer clic en OK. Ahora las columnas se han apilado en una sola columna.
doc apilar columnas a una 1


Las mejores herramientas de productividad de oficina

Kutools para Excel resuelve la mayoría de sus problemas y aumenta su productividad en un 80%

  • Reutilizar: Inserte rápidamente fórmulas complejas, gráficos y cualquier cosa que hayas usado antes; Cifrar celdas con contraseña; Crear lista de distribución y enviar correos electrónicos ...
  • 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 sin perder datos; Contenido de celdas divididas; Combinar filas / columnas duplicadas... 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 ...
  • 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...
  • Más de 300 potentes funciones. Compatible con Office/Excel 2007-2021 y 365. Compatible con todos los idiomas. Fácil implementación en su empresa u organización. Funciones completas Prueba gratuita de 30 días. Garantía de devolución de dinero de 60 días.
pestaña kte 201905

Office Tab lleva la interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil

  • 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 (25)
Aún no hay calificaciones. ¡Sé el primero en calificar!
Este comentario fue minimizado por el moderador en el sitio
está apilando varias filas en una columna, no varias columnas... no es lo que estaba buscando.
Este comentario fue minimizado por el moderador en el sitio
Para apilar columnas AP que están en bloques de 6 filas, coloque estas fórmulas en la celda R1 y complete

=OFFSET($A$1,MOD(ROW()-ROW($R$1),ROWS($A$1:$A$6)),TRUNC((ROW()-ROW($R$1))/ROWS($A$1:$A$6)),1,1)
Este comentario fue minimizado por el moderador en el sitio
Esto funciona perfecto, gracias
Este comentario fue minimizado por el moderador en el sitio
¡Gracias por publicar esta solución! En caso de que alguien necesite un espacio después/al final de cada bloque, simplemente agregue un conteo adicional a las filas, siguiendo el ejemplo anterior, en lugar de $A$6, escriba $A$7. Ingresa un cero '0' en la fila, pero puede 'Usar selección para Buscar' fácilmente en Sublime para editarlos. Si conoce la solución que no agrega un cero, ¡por favor publíquela!?
Este comentario fue minimizado por el moderador en el sitio
para generar una celda en blanco en lugar de 0, haga una función IF> 0, VERDADERO -> generar el contenido de la celda original, FALSO -> generar ""

=if(OFFSET($A$1,MOD(ROW()-ROW($R$1),ROWS($A$1:$A$6)),TRUNC((ROW()-ROW($R$1))/ROWS($A$1:$A$6)),1,1)>0,OFFSET($A$1,MOD(ROW()-ROW($R$1),ROWS($A$1:$A$6)),TRUNC((ROW()-ROW($R$1))/ROWS($A$1:$A$6)),1,1),"")
Este comentario fue minimizado por el moderador en el sitio
¡Diablos, ahora no funciona! Probé en una nueva pestaña, pero ahora vuelve a apilar el contenido de las columnas en una en lugar del contenido de la fila original.
Este comentario fue minimizado por el moderador en el sitio
Cancele ese último, se perdió el paso truncado.
Este comentario fue minimizado por el moderador en el sitio
Sé que respondiste esta pregunta hace mucho tiempo, pero ¿puedes explicar qué hace exactamente cada parte de esta función?
Este comentario fue minimizado por el moderador en el sitio
Tal vez este tutorial te pueda ayudar. https://www.extendoffice.com/documents/excel/3327-excel-convert-multiple-rows-to-columns.html
Este comentario fue minimizado por el moderador en el sitio
esto es solo un clickbait para que descargue un software de pago
Este comentario fue minimizado por el moderador en el sitio
La primera descarga será de uso gratuito en 60 días, después de eso, puede decidir pagar por el uso o no.
Este comentario fue minimizado por el moderador en el sitio
Hola, ¿hay alguno para convertir los datos anteriores al siguiente formulario?
1
A
Lilly
2
B
Judy
...
Este comentario fue minimizado por el moderador en el sitio
Gracias por tu mensaje de despedida, este tutorial. https://www.extendoffice.com/documents/excel/5401-excel-stack-columns-into-one-column.html
está hablando de cómo resolver este problema, puede ir a ver.
Este comentario fue minimizado por el moderador en el sitio
Tengo datos que terminan en la misma fila pero en varias columnas en las que quiero que se apilen en una secuencia donde los datos de la columna B irán debajo de los datos de la columna A donde los datos terminan para la columna A y los datos de la columna C para ir debajo de los datos de la columna A donde terminan los datos de la columna B y así sucesivamente. De esta manera, tendré datos de varias columnas para que quepan en una columna. ¿Cómo puedo hacer eso?
Este comentario fue minimizado por el moderador en el sitio
Hola, ¿hay alguna manera de hacer que la fórmula ignore las celdas en blanco que puedan contener sus datos?


=INDEX(MyData,1+INT((ROW(A1)-1)/COLUMNS(MyData)),MOD(ROW(A1)-1+COLUMNS(MyData),COLUMNS(MyData))+1),


Estoy usando una hoja de ayuda para crear una lista contigua para una lista desplegable de validación de datos. Gracias por adelantado.
Este comentario fue minimizado por el moderador en el sitio
Lo siento, no soy bueno con la fórmula, tal vez pueda intentar usar Kutools para la utilidad Seleccionar celdas no en blanco de Excel para seleccionar las celdas vacías primero, y copiarlas y pegarlas en otra ubicación, luego use los métodos anteriores.
Este comentario fue minimizado por el moderador en el sitio
Hola, estoy buscando dar un paso más con esto. He usado Stack Multiple Columns Into One With VBA, código y esto funciona. He usado Tables como fuente con este código y obtengo la lista. ¿Hay alguna forma de automatizar la ejecución de la macro? ¿De modo que cuando agrego una nueva entrada a la tabla, la macro se ejecuta automáticamente y mantiene actualizada la lista resultante?
Este comentario fue minimizado por el moderador en el sitio
Hola, Chris Blackburn, lo siento, pero no puedo encontrar un código que pueda ejecutarse automáticamente para actualizar el resultado, tal vez alguien más pueda hacerlo.
Este comentario fue minimizado por el moderador en el sitio
Estoy intentando hacer esto en una tabla muy grande (cientos de columnas y filas que están todas vinculadas a fórmulas. Mi Excel seguirá cargándose y finalmente dejará de responder. ¿Hay alguna manera de superar esto? Gracias
Este comentario fue minimizado por el moderador en el sitio
Hola, Tom, ¿qué método que aplicas no funciona? El método tres, la herramienta de rango de transformación debe funcionar.
Este comentario fue minimizado por el moderador en el sitio
Estoy usando el método Stack Multiple Columns Into One With Formula y funcionó perfectamente, pero quiero que mantenga el formato, es decir, algunas columnas estaban en negrita y 1 eran hipervínculos. ¿Hay algo que se pueda agregar a la fórmula para que esto suceda?
Este comentario fue minimizado por el moderador en el sitio
Hola, Susan Milard, su fórmula puede satisfacer sus necesidades, puede usar VBA o la herramienta Transpose Range, ambas pueden satisfacerlo.
Este comentario fue minimizado por el moderador en el sitio
Muchas gracias, la opción de fórmula funcionó muy bien... me ahorraste mucho tiempo.
Este comentario fue minimizado por el moderador en el sitio
Gracias por la fórmula y VBA, pero ninguno hace lo que dice el título de la publicación. Esperaba que apilaran las columnas, pero en lugar de eso transponen cada fila en una columna y las apilan... así que se apilan filas transpuestas, no columnas. Sigue siendo muy útil para algunos casos, pero ¿alguien sabe cómo modificar la fórmula y/o VBA para apilar las columnas? Supongo que podría transponer todo el rango de entrada y luego usar estos...
Este comentario fue minimizado por el moderador en el sitio
Para aquellos que buscan apilar columnas en una sola pero no filas en una, necesita tener una idea clara de lo que realmente quiere hacer. Supongamos que tiene una matriz de 3x3, desea que su función index() obtenga entradas en forma de (fila, columna) para (1,1), (2,1), (3,1), luego (1,2), (2,2), (3,2) y así sucesivamente. hacer es hacer que index() se refiera a una sola columna que contenga todos los números de fila (1; 2; 3; 1; 2; 3; 1; 2; 3) y una sola columna que contenga todos los números de columna (1; 1 ;1;2;2;2;3;3;3). Para obtener (1;2;3;1;2;3;1;2;3), un enfoque de programación común es usar 1+mod(some_counter -1,3) donde la función mod() da los residuos 0,1,2,0,1,2,...
Para obtener (1;1;1;2;2;2;3;3;3), se usa 1+int((some_counter-1)/3) donde da 1+0, 1+0, 1+0 , 1+1, 1+1, 1+1, 1+2, 1+2, 1+2
Por lo tanto, para apilar una matriz de 3x3 en una sola, use la fórmula (presione Ctrl + Mayús + Intro): = índice ($ A $ 1: $ C $ 3, 1 + mod (fila (A1) -1,3), 1 +int((fila(A1)-1)/3)))donde la fila(A1) sirve como contador a medida que rellena la fórmula hacia abajo
Si lo pone al revés (fila a columna, columna a fila), obtendrá filas apiladas en una columna = ÍNDICE ($ A $ 1: $ C $ 3, 1 + INT ((ROW (A1) -1) / 3),1+MOD(ROW(A1)-1,3))que es esencialmente lo que hace la fórmula en este artículo

En pocas palabras, la fórmula utilizada para apilar columnas en una matriz en una sola columna sería: = índice (sus_celdas_de_matriz, 1+mod(fila(A1)-1, número_de_filas_de_su_matriz), 1+int((fila(A1)-1 )/ número_de_columnas_de_su_matriz)))
No hay comentarios publicados aquí todavía
Deje sus comentarios
Publicar como invitado
×
Califica esta publicación:
0   Personajes
Ubicaciones sugeridas

Siganos

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