Guardar informacion desde la hoja 1 a hoja 2, sin que la informacion en hoja 2 se borre

2 envíos / 0 nuevos
Último envío
rberland
Imagen de rberland
Offline
última acción: Hace 9 años 1 mes
alta: 05/05/2014 - 14:34
Puntos: 152
Guardar informacion desde la hoja 1 a hoja 2, sin que la informacion en hoja 2 se borre

Hola,

 

  Necesito saber como realizar una procedimiento en vba, para que la informacion que esta en varias filas de la hoja 1, se guarde en la hoja 2 sin que la informacion guardada antes ahi se borre...

 

  desde ya muchas gracias adjunto archivo de prueba

 

AdjuntoTamaño
File consolidado_evaluacion.xlsx17.98 KB
pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 semana 4 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Re: Guardar informacion desde la hoja 1 a hoja 2, sin que la ...

El truco está en detectar dónde (en qué fila) tienes el último dato en tu hoja consolidado para continuar anotando datos en la fila siguiente.

 

Tienes varias opciones para identificar esa última fila, te comento unas cuantas:

UsedRange es una propiedad de la hoja que indica el rango utilizado. Por ejemplo

filas_utilizadas=sheets("bdconsolidado").usedrange.rows.count  

 

una vez conocidas las filas, puedes emplearlas por ejemplo con el método Offset o con Range o Cells para situarte en la celda donde quieres empezar a anotar.

La pega de UsedRange es que puede no estar actualizado, así que si tuviste datos en la hoja y luego los borraste, puede que usedrange guarde el rango máximo que se utilizó, con lo que no sería válido.

 

un bucle: puedes realizar un bucle por las celdas hasta que llegues a una fila vacía

por ejemplo, suponiendo que todos tus datos tengan algo escrito en la columna A, podrías recorrerla del encabezado de la tabla hacia abajo hasta encontrar la primera celda vacía

 

Const primeracelda = "A3"   'la celda del encabezado, empezamos a mirar a partir de ahí

Const hojaconsolidado = "bdconsolidado"

Dim celdaLibre As Range

Dim contador As Long

contador = 0

With Sheets(hojaconsolidado)

    contador = 0

    Do Until IsEmpty(.Range(primeracelda).Offset(contador, 0))

        contador = contador + 1

    Loop

    Set celdaLibre = .Range(primeracelda).Offset(contador, 0) 'aquí tenemos la celda libre

End With

 

End(XlDown). esto es un método que tienen los rangos y se parece a como lo harías con el teclado con [Fin]+ [Fecha de dirección]

Te puedes colocar en la primera celda de la tabla, en este caso la A3, y luego ir a la última celda hacia abajo, como si pulsases [fin]+[flecha abajo], con esto irías a la última celda con datos en la columna A.

Sólo tienes que tener la precaución de que la primera vez, no tienes datos aún, así que habría que comprobar si la primera celda ya es vacía, para no saltar hasta la fila un millón.

podría ser algo así:

 

Const primeracelda = "A3"   'la celda del encabezado, empezamos a mirar a partir de ahí

Const hojaconsolidado = "bdconsolidado"

Dim celdaLibre As Range

With Sheets(hojaconsolidado)

    If IsEmpty(.Range(primeracelda).Offset(1, 0)) Then

        Set celdaLibre = .Range(primeracelda).Offset(1, 0)

    Else

        Set celdaLibre = .Range(primeracelda).End(xlDown).Offset(1, 0)

    End If

End With

 

 

Puede hacerse de varios maneras, dependerá de cómo sean tus datos, cómo sea la hoja de destino, ...

 

------
Ya sé Excel, pero necesito más.