Copiar fila al lado de una celda buscada

En una hoja tengo una fila de datos correspondientes al total de la actividad de un día de trabajo; en la siguiente hoja, la columna A me señala los días del mes en número (1,2,3... Hasta el 31). ¿Cómo puedo hacer que la fila de los totales se me pegue en la segunda hoja en su fila correspondiente y no en la de otro día?
Respuesta
1
Ahora creo que sí entendí tu pregunta. Si no utilizaras la función =ahora(), podrías hacerlo mediante la función BuscarV. El problema es que la función ahora, como bien sabes, cambia todos los días. Por tanto no queda más remedio que usar una macro. Supongo los siguientes datos:en la Hoja2 tienes colocados los días en nº en el rango A2:A32. En la hoja1 tienes los datos que quieres traspasar en el rango B2:E2. Y la función =día(A1) la tienes en la celda B1. A partir de aquí, ve al editor de Visual Basic(Alt+F11), ve a Insertar-Módulo, y pega el siguiente código:
Sub PegarTotales()
Sheets("Hoja1").Activate
Dim Fila
Fila = Range("B1").Value + 1
'Ojo: he sumado 1 porque los días en la otra hoja empiezan
'en la celda A2. Si para tí empiezan en A3, deberás sumar 2,
'es decir, debes sumar el nº de fila donde empiezan los datos -1
Range("B2:E2").Copy Sheets("Hoja2").Range("B" & Fila)
End Sub
Ahora cada vez que ejecutes la macro hará lo que deseas. Si quieres, quizás te resulte más cómodo poner un botón en la hoja que cada vez que lo pulses ejecute la macro. Para ello, saca la barra de herramientas "Formularios", pincha sobre el botón, ponlo donde quieras, y cuando sueltes te saldrá un mensaje para asignar macro. Pincha sobre PegarTotales, y ya lo tienes. En fin, espero ahora sí haberte ayudado. Sino, vuelve a preguntarme, te doy mi e-mail y me mandas el archivo. Y si te ayudé.
Según entiendo yo, lo que quieres es convertir una fila en columna: es decir, dices que tienes una fila con datos. Y que quieres pegarlas en la columna B de otra hoja, al lado de los días. Si entendí bien, y ésta es tu duda, debes seguir los siguientes pasos: selecciona el área que quieres copiar, dale a copiar, ve a la hoja donde quieres pegar los datos, pincha en la primera celda a partir de la cual quieres pegarlos, y ve a Edición-Pegado Especial-Pincha donde dice "Transponer" y da a Aceptar.
Si era ésto lo que querías, por favor, no olvides finalizar la pregunta. Sino, vuelve a preguntarme y con gusto te ayudo.
No, los días en número son la primera celda de cada fila hasta 31 filas y las tengo en la hoja nº 2; la fila de la hoja 1 que sé que es del día 16, por ejemplo, (mediante dos celdas una con la función a1=ahora() y otra con =día(A1)), Es la que quiero copiar en la hoja nº 2 a la derecha de la celda que tenga como valor 16 (corresponda al número del día). Espero haberme explicado y si no lo he hecho te puedo mandar el archivo, que no pesa apenas.
Gracias por tu interés
villaju, vamos de cine pero:
Selecciona el rango deseado en la primera de las hojas, busca lña celda del día correspondiente y pega a la derecha el rango de la otra hoja. El problema es que todos los valores son cero porque los datos de las celdas del rango que pasamos de una hoja a otra, tienen referencias como =SUMA(B8+B9+B19) o del tipo =b25. ¿Hay alguna forma que lo que seleccionemos sea sólo y puramente los números de las celdas y no las funciones o referencias que los crean?
Te pongo el código real adaptado a las posiciones de los rangos y nombres de las hojas
Sub PEGARTOTALES()
Sheets("HOJA2").Activate
Dim FILA
FILA = Range("B1").Value + 1
Range("C2:N2").Copy Sheets("HOJA3").Range("B" & FILA)
End Sub
Genial¡
Que la vida te devuelva lo que das. Gracias
Claro que se puede hacer lo que pretendes: cuando sólo quieres pegar los valores de las fórmulas, y no las fórmulas mismas, SIN MACRO se hace de la siguiente manera: copias el rango deseado, te sitúas donde quieres pegarlo, vas a Edición-Pegado Especial-Valores-Aceptar. Para hacerlo mediante macro, tu código quedaría así:
Sub PEGARTOTALES()
Sheets("HOJA2").Activate
Dim FILA
FILA = Range("B1").Value + 1
Range("C2:N2").Copy
Sheets("HOJA3").Range("B" & FILA).PasteSpecial Paste:=xlValues
End Sub
Pruébala y me cuentas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas