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

¿Cómo duplicar filas según el valor de la celda en una columna?

Por ejemplo, tengo un rango de datos que contiene una lista de números en la columna D, y ahora quiero duplicar las filas completas varias veces en función de los valores numéricos de la columna D para obtener el siguiente resultado. ¿Cómo podría copiar las filas varias veces en función de los valores de celda en Excel?

doc filas duplicadas por celda 1

Duplique filas varias veces según los valores de celda con código VBA


flecha azul burbuja derecha Duplique filas varias veces según los valores de celda con código VBA

Para copiar y duplicar las filas completas varias veces en función de los valores de celda, el siguiente código VBA puede ayudarlo, haga lo siguiente:

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 el Módulo Ventana.

Código de VBA: filas duplicadas varias veces según el valor de la celda:

Sub CopyData()
'Updateby Extendoffice
    Dim xRow As Long
    Dim VInSertNum As Variant
    xRow = 1
    Application.ScreenUpdating = False
    Do While (Cells(xRow, "A") <> "")
        VInSertNum = Cells(xRow, "D")
        If ((VInSertNum > 1) And IsNumeric(VInSertNum)) Then
           Range(Cells(xRow, "A"), Cells(xRow, "D")).Copy
           Range(Cells(xRow + 1, "A"), Cells(xRow + VInSertNum - 1, "D")).Select
           Selection.Insert Shift:=xlDown
           xRow = xRow + VInSertNum - 1
        End If
        xRow = xRow + 1
    Loop
    Application.ScreenUpdating = False
End Sub

3. Entonces presione F5 clave para ejecutar este código, las filas completas se han duplicado varias veces en función del valor de la celda en la columna D según lo necesite.

Nota:: En el código anterior, la letra A indica la columna de inicio de su rango de datos y la letra D es la letra de la columna en la que desea duplicar las filas. Cámbielos según sus necesidades.


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 (41)
Aún no hay calificaciones. ¡Sé el primero en calificar!
Este comentario fue minimizado por el moderador en el sitio
Esto funcionó perfectamente. ¿Qué agregaría a su código para que desaparezcan las líneas con '0'? Estamos usando esto para las etiquetas SKU. ¡Gracias por la gran solución!
Este comentario fue minimizado por el moderador en el sitio
te quiero. Gracias.
Este comentario fue minimizado por el moderador en el sitio
¡Gracias! las líneas 10 y 11 "D" indican el final de la fila y es posible que deba cambiarse a su rango de datos para que funcione.
Este comentario fue minimizado por el moderador en el sitio
Hola,
¿Alguien sabe convertir este código VBA en secuencias de comandos de Google Apps (hojas de Google)?
Este comentario fue minimizado por el moderador en el sitio
Usé el código anterior que funciona muy bien, pero necesito un paso más después de pegar la fila. Simplemente no puedo hacer que funcione correctamente. Lo necesito para poner cero en la columna "N" en la fila después de pegarlo, pero mantener el valor en "N" en la fila original copiada.


Copia secundaria de datos ()
'Actualizar por Extendoffice 20160922
Dim xRow tan largo
Dim VInSertNum como variante
Fila x = 1
Application.ScreenUpdating = False
Hacer Mientras (Celdas(xRow, "A") <> "")
VInSertNum = Celdas(xRow, "J")
Si ((VInSertNum > 1) y es numérico(VInSertNum)) Entonces
Rango (Celdas (fila x, "A"), Celdas (fila x, "AN")). Copiar
' Cells(xRow, 14).Value = 0 esto hizo todas las filas
Rango (Celdas (xRow + 1, "A"), Celdas (xRow + VInSertNum - 1, "AN")). Seleccione
'Celdas(filax, 14).Valor = 0
'esto hizo todas las filas
Selection.Insert Shift: = xlDown
' Cells(xRow, 14).Value = 0 esto hizo solo la primera fila
xFila = xFila + VInSertNum - 1
'Celdas(filax - 1, 14).Valor = 0
Si terminar
' Celdas(filax - 1, 14).Valor = 0
xFila = xFila + 1
' Celdas(filax + 1, 14).Valor = 0
Red ISTE Loop
'Cells(xRow, 14).Value = 0 esto no hizo filas
Application.ScreenUpdating = False
End Sub
Este comentario fue minimizado por el moderador en el sitio
Hola Steve, pudiste hacer esto. mi requerimiento es algo similar :(
Este comentario fue minimizado por el moderador en el sitio
Hola chicos,
Tal vez el siguiente artículo pueda ayudarlo, por favor revíselo:
https://www.extendoffice.com/documents/excel/3682-excel-copy-and-insert-row-multiple-times.html
Este comentario fue minimizado por el moderador en el sitio
¿Sabe cuál sería el código para duplicar la fila solo una vez, en función de si dice que la celda d contiene 'Sí'? He estado persiguiendo un código similar pero para algo que duplicará una fila en función de una celda que dice sí
Este comentario fue minimizado por el moderador en el sitio
Así que estoy usando este código, pero quiero que busque en todo el documento, no solo en la fila 1 o lo que indique xRow = 1. Estoy tratando de poner el rango 1:2000 pero no funciona. ¿Cómo puedo identificar xRow = cualquier fila en la hoja que incluya la información que identifico en el código a continuación?


Dim xRow tan largo
Valor tenue como variante


Filax = 1: 2000

Application.ScreenUpdating = False
Hacer Mientras (Celdas(xRow, "A") <> "")
Valor = Celdas (filax, "D")
Valor2 = Celdas(filax, "A")
If Not ((Value = "allegheny general") And IsNumeric(Value2 = G0202)) Entonces
Rango (Celdas (fila x, "A"), Celdas (fila x, "D")). Copiar
Rango (Celdas (fila x + 1, "A"), Celdas (fila x + 1, "D")). Seleccione
Selection.Insert Shift: = xlDown
xFila = xFila + 1
Si terminar
xFila = xFila + 1
Red ISTE Loop
Application.ScreenUpdating = False
End Sub
Este comentario fue minimizado por el moderador en el sitio
Hola, esto funcionó muy bien. Sin embargo, tengo un informe con 1000 entradas y el código dejó de duplicarse alrededor de la entrada 480. ¿Hay algo que pueda agregar para que complete la acción en todo el informe?
Este comentario fue minimizado por el moderador en el sitio
Hola, Lea,
He probado el código en 2000 filas y funciona bien.
¿Podría enviarme su hoja de trabajo para probar el código?
Mi dirección de correo electrónico es skyyang@extendoffice.com
¡Espero su respuesta!
Este comentario fue minimizado por el moderador en el sitio
¡Hola! Yo tengo que trabajar. Fue un error de mi parte, el informe tenía algunas filas en blanco que estaban ocultas que estaban causando que el script dejara de repetirse. ¡Funcionó para mi informe con 8,000 filas! Gracias Q
Este comentario fue minimizado por el moderador en el sitio
Hola Leah y Skyyang,
Tengo un problema similar: el script funciona bien en una hoja de trabajo de alrededor de 100 filas, pero deja de funcionar para algo más grande. He buscado filas en blanco en la columna de donde proviene el número de multiplicación y no hay ninguna. ¿Alguna otra razón por la que el script podría no funcionar para conjuntos de datos más grandes?
Este comentario fue minimizado por el moderador en el sitio
¡Gracias! ha sido una gran solución para todos mis problemas!
Este comentario fue minimizado por el moderador en el sitio
Este script parece ser exactamente lo que necesito, sin embargo, cuando lo ejecuto, aparece un error en la línea Selection.Insert Shift:=x1Down

¿Alguna sugerencia sobre cómo soluciono esto?
Este comentario fue minimizado por el moderador en el sitio
hola, para mí no funciona, quiero eliminar letras y duplicar números, ¿es posible?
Este comentario fue minimizado por el moderador en el sitio
¿Hay alguna forma de actualizar el módulo para duplicar solo los datos nuevos? Estoy trabajando en un documento en curso y no quiero que el código duplique datos que se han duplicado anteriormente.
Este comentario fue minimizado por el moderador en el sitio
¿Hay alguna manera de que podamos agregar a cada celda repetida, caracteres consecutivos? ejemplo
KTE+0001

KTE+0002
Este comentario fue minimizado por el moderador en el sitio
¡Precioso! Gracias. Me pregunto si alguien podría dar una pista sobre cómo incorporaría una nueva columna de información en la tabla (columna E) que es un número de valor incremental para cada fila copiada, 1, 2, 3, 4, etc... y luego cuando llegue al siguiente elemento que se duplicará X veces, comenzará a numerarse nuevamente desde 1 y aumentará en 1 cada vez.
Este comentario fue minimizado por el moderador en el sitio
Hola, he intentado esto, pero ¿hay alguna manera de considerar si hay varios criterios con los datos que estoy duplicando?
Este comentario fue minimizado por el moderador en el sitio
Hola,

Estoy creando una hoja de cálculo usando la fórmula provista pero tengo errores. por favor, ¿alguien puede decirme cuál debería ser mi fórmula?

mi tabla es de AY con las cantidades en K.
Este comentario fue minimizado por el moderador en el sitio
hola, he estado tratando de ajustar este código pero tengo dificultades.
Tengo artículos de inventario. cada elemento tiene dos filas y los quiero duplicados N número de veces
en la parte superior de la hoja de cálculo, tengo una celda, llamémosla A1, ¿cuántas veces se duplica? norte
cualquiera que sea el valor N, quiero duplicar el artículo de inventario inicial que tengo (A16, A17) tantas veces.
por lo que el elemento copiado debe comenzar en A18 (y son dos filas, el siguiente elemento a20, etc.
Muchas Gracias
Este comentario fue minimizado por el moderador en el sitio
Hola, el código funciona muy bien. También quería agregar +1 a la fecha (solo entre semana) cada vez que se duplica la fila.
Este comentario fue minimizado por el moderador en el sitio
¡Muchas gracias! Esto me ha ahorrado tanto tiempo que solía perder copiando y pegando todas mis filas de datos.
¡¡Dos pulgares arriba!!
Este comentario fue minimizado por el moderador en el sitio
Gran pieza de código !!! ¡¡¡Gracias!!!
No hay comentarios publicados aquí todavía
Ver más
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