Saltar al contenido

Copiar datos a partir de una fila


Recommended Posts

Hola buenas.

Necesitaria uan macro que copiara o registrara los datos a partir de una fila, estos datos van cambiando.

En hoja1 Fila 2 (color amarillo), estos datos no son nunca los mismos nesesitaria una macro para que se copiaran o registraran a partir de la fila 5 (color naranja) a medida que los datos de la fila 2 van cambiando.

Hoja 2 lo mismo pero los datos estan en celdas separadas (color amarillo)

Gracias de antemano.

Salud2.

Macro Copiar datos.rar

Enlace a comentario
Compartir con otras webs

Hola @[uSER=88650]eugeniocol[/uSER]:

En cada hoja encontraras un boton que dice agregar, ingresas los datos en las celdas de color amarillo, y luego le das agregar y se agregaran a partir de la fila que indicaste en cada hoja, luego el contenido de la celda amarilla se borra para que puedas ingresar mas datos.

Saludos

Macro Copiar datos_vba.rar

Enlace a comentario
Compartir con otras webs

Hola @[uSER=88650]eugeniocol[/uSER]:

En cada hoja encontraras un boton que dice agregar, ingresas los datos en las celdas de color amarillo, y luego le das agregar y se agregaran a partir de la fila que indicaste en cada hoja, luego el contenido de la celda amarilla se borra para que puedas ingresar mas datos.

Saludos

No es lo que necesito, al agregar los datos de la columna amarilla estos desaparecen de esta y los datos de la columna amarilla se tienen que quedar en ella, estos estan enlazados con otra hoja.

Salud2.

Enlace a comentario
Compartir con otras webs

hola @eugoniocol:

Para que los datos se queden en las celdas de color amarillo, deberias borrar el siguiente codigo en cada subturina

En RegistrarHoja1

    'Limpiar fila 2
Sheets("Hoja1").Range("A2:F2").Value = ""[/CODE]

En [b]RegistrarHoja2 [/b]

[CODE]
'Limpiar fila 2
Sheets("Hoja2").Range("A2:F5").Value = ""[/CODE]

Saludos

Enlace a comentario
Compartir con otras webs

Hola @[uSER=88650]eugeniocol[/uSER]:

En cada hoja encontraras un boton que dice agregar, ingresas los datos en las celdas de color amarillo, y luego le das agregar y se agregaran a partir de la fila que indicaste en cada hoja, luego el contenido de la celda amarilla se borra para que puedas ingresar mas datos.

Saludos

No es lo que necesito, al agregar los datos de la columna amarilla estos desaparecen de esta y los datos de la columna amarilla se tienen que quedar en ella, estos estan enlazados con otra hoja.

Salud2.

hola @eugoniocol:

Para que los datos se queden en las celdas de color amarillo, deberias borrar el siguiente codigo en cada subturina

En RegistrarHoja1

    'Limpiar fila 2
Sheets("Hoja1").Range("A2:F2").Value = ""[/CODE]

En [b]RegistrarHoja2 [/b]

[CODE]
'Limpiar fila 2
Sheets("Hoja2").Range("A2:F5").Value = ""[/CODE]

Saludos

ok. ahora si.

Una cosita mas , en otras hojas tengo un mismo formato (este del libro me vale para ejemplo) se podria añadir a esta macro para que haga lo mismo en otras hojas ???

Salud2.

Enlace a comentario
Compartir con otras webs

No soy capaz de ajustarla al rango que quiero, los datos los pilla bien pero me graba en N:T desde la fila 24 cuando tendria que empezar en la fila 9

Sub RegistrarDATOS()
Sub RegistrarDATOS()
ufila = Cells(Rows.Count, 1).End(xlUp).Row + 1
If ufila = 3 Then ufila = ufila + 2

'Agregar datos de la fila 2 a la fila a partir de la 5
Cells(ufila, 14) = Cells(5, 14)
Cells(ufila, 15) = Cells(5, 15)
Cells(ufila, 16) = Cells(5, 16)
Cells(ufila, 17) = Cells(5, 17)
Cells(ufila, 18) = Cells(5, 18)
Cells(ufila, 19) = Cells(5, 19)
Cells(ufila, 20) = Cells(5, 20)

'Limpiar fila 2
'Sheets("Hoja1").Range("A2:F2").Value = ""

'Enforcar en la celda A2
Cells(4, 14).Select
End Sub


[/CODE]

Salud2.

Enlace a comentario
Compartir con otras webs

bueno creo que se cual es el motivo por lo que me graba en N:T desde la fila 24 cuando tendria que empezar en la fila 9, es que en A:K23 hay datos y el ultimo esta en A23:C23 lo que no se como solucionarlo en la macro ??

y no se que importancia tienen estos comandos proque si los anulo veo que no afecta para nada a la macro.

If ufila = 3 Then ufila = ufila + 2

'Cells(5, 14).Select[/CODE]

bueno el ultimo situa al raton en esa celda cuando acaba de ejecutar la macro.

Salud2.

Enlace a comentario
Compartir con otras webs

he resuelto a capon y por intuicion al no tener idea del leguaje vba, logre que grabara el registro en el rango que queria y desde la fila desde la fila 6 asi

Sub RegistrarDATOS()
ufila = Cells(Rows.Count, 14).End(xlUp).Row + 1
If ufila = 3 Then ufila = a + 1

'Agregar datos de la fila 2 a la fila a partir de la 5
Cells(ufila, 14) = Cells(5, 14)
Cells(ufila, 15) = Cells(5, 15)
Cells(ufila, 16) = Cells(5, 16)
Cells(ufila, 17) = Cells(5, 17)
Cells(ufila, 18) = Cells(5, 18)
Cells(ufila, 19) = Cells(5, 19)
Cells(ufila, 20) = Cells(5, 20)

'Limpiar fila 2
'Sheets("Hoja1").Range("A2:F2").Value = ""

'Enforcar en la celda A2
Cells(6, 14).Select
End Sub

[/CODE]

y como te comente antes en otro post de arriba, es que si puedes añadir a esta macro para que esto mismo lo haga en otras hojas del libro.

tambien me gustaria saber a que hace referencia estas instrucciones

[CODE]ufila = Cells(Rows.Count, 1).End(xlUp).Row + 1
If ufila = 3 Then ufila = ufila + 2

ufila = Cells(Rows.Count, 1).End(xlUp).Row + 1
If ufila = 6 Then ufila = ufila + 2[/CODE]

Salud2.

Enlace a comentario
Compartir con otras webs

Hola!

Otra manera de interpretar (comentada, para que veas qué significa cada cosa):

Sub Copia()
Dim pf&, uf&
' Defino la primera fila de copia
pf = 5
' Halle la última fila con datos, y súmele 1
uf = Range("A" & Rows.Count).End(xlUp).Row + 1
' Si la última fila es menor que la inicial, inicie en la fila inicial
If uf < pf Then uf = pf
With Range("A" & uf).Resize(, 6)
' Haga la copia
.Value = Range("A2").Resize(, 6).Value
' Céntrelo y póngale negrita
.HorizontalAlignment = xlCenter
.Font.Bold = True
End With
End Sub[/CODE]

Bendiciones!

Enlace a comentario
Compartir con otras webs

Hola!

Otra manera de interpretar (comentada, para que veas qué significa cada cosa):

Sub Copia()
Dim pf&, uf&
' Defino la primera fila de copia
pf = 5
' Halle la última fila con datos, y súmele 1
uf = Range("A" & Rows.Count).End(xlUp).Row + 1
' Si la última fila es menor que la inicial, inicie en la fila inicial
If uf < pf Then uf = pf
With Range("A" & uf).Resize(, 6)
' Haga la copia
.Value = Range("A2").Resize(, 6).Value
' Céntrelo y póngale negrita
.HorizontalAlignment = xlCenter
.Font.Bold = True
End With
End Sub[/CODE]

Bendiciones!

para copiar una fila solo me parece mas facil y rapida de acoplar a otra hoja, pero si q uiero copiar un rango mas amplio 2,3,4,5 ect.. de filas ???

Salud2.

Enlace a comentario
Compartir con otras webs

he resuelto a capon y por intuicion al no tener idea del leguaje vba, logre que grabara el registro en el rango que queria y desde la fila desde la fila 6 asi

Sub RegistrarDATOS()
ufila = Cells(Rows.Count, 14).End(xlUp).Row + 1
If ufila = 3 Then ufila = a + 1

'Agregar datos de la fila 2 a la fila a partir de la 5
Cells(ufila, 14) = Cells(5, 14)
Cells(ufila, 15) = Cells(5, 15)
Cells(ufila, 16) = Cells(5, 16)
Cells(ufila, 17) = Cells(5, 17)
Cells(ufila, 18) = Cells(5, 18)
Cells(ufila, 19) = Cells(5, 19)
Cells(ufila, 20) = Cells(5, 20)

'Limpiar fila 2
'Sheets("Hoja1").Range("A2:F2").Value = ""

'Enforcar en la celda A2
Cells(6, 14).Select
End Sub

[/CODE]

y como te comente antes en otro post de arriba, es que si puedes añadir a esta macro para que esto mismo lo haga en otras hojas del libro.

tambien me gustaria saber a que hace referencia estas instrucciones

[CODE]ufila = Cells(Rows.Count, 1).End(xlUp).Row + 1
If ufila = 3 Then ufila = ufila + 2

ufila = Cells(Rows.Count, 1).End(xlUp).Row + 1
If ufila = 6 Then ufila = ufila + 2[/CODE]

Salud2.

Hola:

Te explico que significa cada una

[CODE]
se dirige a la ultima fila de la primera columna y se posiciona una fila mas abajo
ufila = Cells(Rows.Count, 1).End(xlUp).Row + 1

Este codigo lo que haces es validar si se encuentra en la tercera fila y sumarle 2 para que sea 5 y se posicione en la fila 5(que es donde empezada a grabarse los datos)
If ufila = 3 Then ufila = ufila + 2

La misma explicacion tiene este codigo de la otra hoja.
ufila = Cells(Rows.Count, 1).End(xlUp).Row + 1
If ufila = 6 Then ufila = ufila + 2[/CODE]

Saludos

Enlace a comentario
Compartir con otras webs

busca en la ayuda de Excel VBA sobre la propiedad Resize

Unos pocos ejemplos:

Range("A1").Resize(2,3) <-- Hace referencia al Rango A1:C3
Range("A1").Resize(2) <-- Hace referencia al Rango A1:A2
Range("A1").Resize(,6) <-- Hace referencia al Rango A1:F1
Range("B3").Resize(2,4) <-- Hace referencia al Rango B3:E4[/CODE]

Bendiciones!

Enlace a comentario
Compartir con otras webs

al final con las indicaciones que se comenta la monte asi la macro

Sub Copia()
Dim pf&, uf&
' Defino la primera fila de copia,pf = 5 es la fila donde pega la copia
pf = 5
' Halle la última fila con datos, y súmele 1, A es donde empieza la copia
uf = Range("A" & Rows.Count).End(xlUp).Row + 1
' Si la última fila es menor que la inicial, inicie en la fila inicial
'Resize(2, 6) 2,6 es el numero total de celdas a copiar en este caso del rango A2:F3
If uf < pf Then uf = pf
With Range("A" & uf).Resize(2, 6)
' Haga la copia Resize(2, 6) 2,6 es el numero de la columna,Value = Range("A2") es donde empieza hacer la copia y Resize(2, 6).Value eldas a copiar en este caso del rango A2:F3
.Value = Range("A2").Resize(2, 6).Value
' Céntrelo y póngale negrita
.HorizontalAlignment = xlCenter
.Font.Bold = True

End With

End Sub[/CODE]

entonces (2,6) 2 es la fila y 6 la columna esto es asi no ???

y para finalizar esta macro, quisiera que esto mismo que hace la macro de registrar o copiar x valores de x rangos en una misma hoja, al ejecutar la macro los realice en otras hojas del libro al msimo tiempo.

Salud2.

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

    • Si  no me he liado con los paréntesis: Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False Application.Calculation = xlManual Application.EnableEvents = False If Not Intersect(Target, Range("$L$5:$Y$9")) Is Nothing Then Range("E22") = WorksheetFunction.Sum(Range("E4:E21")) Range("E23") = WorksheetFunction.Sum(Range("E4:E19")) Range("E24") = Range("E23") - WorksheetFunction.Sum(Range("I4:I7")) Range("I22") = WorksheetFunction.Sum(Range("I4:I21")) Range("I4") = Range("E23") * 0.1 Range("I5") = Range("EN10") * Range("EN11") Range("I6") = Range("E23") * 0.0127 Range("I7") = Range("E23") * 0.006 Range("I25") = Range("E22") - Range("I22") Range("I12") = Range("E24") * 0.03 Range("C7") = Range("EQ8") - Range("EQ9") + Range("EN13") + Range("EN14") + Range("EN15") + Range("EN16") Range("C9") = Range("EQ9") + Range("EN17") + Range("EN18") + Range("EN19") Range("E7") = Range("E4") / Range("C4") * 7 / 44 * 1.5 * Range("C7") Range("E8") = Range("E4") / Range("C4") * 7 / 44 * 0.3 * Range("C8") Range("E9") = Range("E4") / Range("C4") * 7 / 44 * 1.3 * 1.5 * Range("C9") End If Application.Calculation = xlAutomatic Application.ScreenUpdating = True Application.EnableEvents = True End Sub  
    • Hola de nuevo a ambos, @daren, tu archivo lleva excesivos datos, que creo no son necesarios para la información final que buscas. Te subo otro archivo, simplificado al máximo, que, si lo he entendido bien, con esta fórmula simplificada: =CONTAR.SI('Casos de Prueba'!I:I;"OK")*('Casos de Prueba'!I1="Resultados Ciclo "&COLUMNA(A5)) se calcularía el primer dato, que se encuentra en la columna I. Copiando la fórmula a la derecha las celdas que necesites, se completaría el rango.  Tu fórmula la coloco en D7, y esta nueva en D9, que como ves (si, repito, he interpretado bien lo que buscas), da los mismos resultados. ---------------------------------------------------------------- En cuanto a: Aquí tienes, en el mismo archivo (Hoja 3) lo que devuelve tu fórmula cuando hay un determinado dato en A1 y en B2. No llego a entender qué es lo que quieres exactamente.  Tal vez con una pequeña explicación de lo que esperas obtener, sea suficiente para poner el hilo a la aguja. ? ----------------------------------------------------------------- En el caso de que falte por añadir o evaluar alguna otra variable o parámetro (en tu primer post hablabas sólo de 'OK' y ahora veo que en el archivo figuran además 'KO' y 'BLOCK'), por favor, intenta emular el ejemplo del archivo que estoy subiendo; añade EXCLUSIVAMENTE esos datos en la hoja allá donde proceda, explicando dónde o cómo deben contarse o sumarse. Mejor trabajar siempre con datos anónimos y reducidos. Desconozco si en tu archivo alguno de esos datos puede considerarse confidencial, pero seguro que no interesan a nadie. Mucho mejor obviarlos. Saludos, Plantilla V3 (B).xlsx
    • buenas noches, quisiera saber si puedo mejorar mi macros que se encuentra en el evento change de la hoja de calculo de Excel, son códigos de cálculos básicos, además si me pudieran ayudar a reducir el código o darme algún tip para reducirlo yo mismo estaría muy agradecido.  de ante mano muchas gracias     Private Sub Worksheet_Change(ByVal Target As Range)     Application.ScreenUpdating = False     Application.Calculation = xlManual     Application.EnableEvents = False              If Not Intersect(Target, Range("$L$5:$Y$9")) Is Nothing Then             Sub todo()          Range("E22") = WorksheetFunction.Sum(Range("E4:E21"))     Range("E23") = WorksheetFunction.Sum(Range("E4:E19"))     Range("E24") = WorksheetFunction.Sum(Range("E23") - WorksheetFunction.Sum(Range("I4:I7")))     Range("i22") = WorksheetFunction.Sum(Range("I4:I21"))     Range("I4") = Range("E23") * 0.1     Range("I6") = Range("E23") * 0.0127     Range("I5") = Range("EN10") * Range("EN11")     Range("I7") = Range("E23") * 0.006     Range("I25") = Range("E22") - Range("I22")     Range("I12") = Range("E24") * 0.03     Range("C7") = WorksheetFunction.Sum(Range("EQ8") - (Range("EQ9"))) + Range("EN13") + Range("EN14") + Range("EN15") + Range("EN16")     'Range("E7") = WorksheetFunction.Sum(Range("C7") * ((Range("E4") * 0.0077777)))     Range("C9") = Range("EQ9") + Range("EN17") + Range("EN18") + Range("EN19")     'Range("E9") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 45) * 1.3) * 1.5) * Range("C9")     'Range("E8") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 45) * 0.3)) * (Range("C8"))     Range("E9") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 44) * 1.3) * 1.5) * Range("C9")     Range("E8") = WorksheetFunction.Sum(((((Range("E4") / Range("C4")) * 7) / 44) * 0.3)) * (Range("C8"))     Range("E7") = WorksheetFunction.Sum((((Range("E4") / Range("C4")) * 7) / 44) * 1.5) * Range("C7")          End Sub              End If                  Application.Calculation = xlAutomatic     Application.ScreenUpdating = True     Application.EnableEvents = True     End Sub
    • Buenas perdonad la espera adjunto el fichero Excel y explico mas detallado lo que me solicitan: Lo que me solicitan es que esos CP de la pestaña Casos de prueba los cuales tienen formulas para que cuando se copien y peguen junto a sus pasos el CP se va autoincrementando a 1,2,3 etc...., pero si copias ese CP bien solo con el primer paso o con todos sus  pasos y lo insertas entre dos CP no continua con la numeración, como se ve en la foto al hacer eso el CP insertado continua con la numeración CP2 y el de abajo pone también CP2 no se incrementa ni ese ni el valor de CU que hay a la derecha que también es incremental. Necesitaría que continuara con esa numeración aun insertándolo entre medio de 2 tanto el CP como el CU de la derecha. También me solicitan que el campo Ciclo 1 de la pestaña Resumen es auto incremental cuando copias y pegas va sumando 1, pero en las formulas referentes a Ok KO Y bloqueo al copiar y pegar se mantiene la misma formula , la idea es que cuando copies y pegues la fila donde están los ciclos se autoincremente Ciclo a 1,2,3,4 etc... y la formula de los campos OK,KO y Bloqueos se incremente también pasando de la columna I a la J  luego a la k etc... y que en Resultados Ciclo el numero de la formula también se incremente Resultados Ciclo 1 , 2 ,3 etc... que cambie la columna a la vez que el numero de Resultados Ciclo. Gracias por adelantado un saludo. Plantilla v3 Pruebas.xlsx  
    • Saludos amigos espero estén bien Estoy intentando hacer un formulario que me convierta unidades de masa sin embargo  en el mejor de los casos solo he podido lograr la conversión de una unidad a la vez en los TextBox 1, 3, 5, 7, 9, 11 y 13 y cuando lo logro el resultado que se copia  en la celda no se corresponde con el obtenido originalmente en el Textbox del Formulario (frmconv)  ejemplo al convertir 1900 Kg a Lb el resultado en el TextBox1 =4188,78298142 sin embargo al guardar el resultado lo que se copia en la Celda  "F11" es  418.878.298.142,00, adicionalmente el resultado de la conversión no se visualiza inmediatamente por lo que debo de hacer click en los TextBox 1, 3, 5, 7, 9, 11 y 13  para ver el resultado. Mucho les sabre agradecer la ayuda que me puedan brindar. PRUEBA.xlsm
  • 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.