Hacer un historial para 2 celdas
Necesito hacer una historial de 2 celdas especificas por ejemplo c5 g5 quiero que estas celdas a medida que tomen valores me guarde por columnas cada uno de los valores que va tomando para hacer un resumen durante el día, yo tengo una macro hecha ya pero solo logre que fuera para una sola celda y necesito que sean los dos valores lo que pueda guardar.
1 respuesta
Respuesta de Elsa Matilde
1
1

Elsa Matilde, https://www.youtube.com/c/ElsaMatilde
Escribime tu rutina aquí para que ajuste lo que falta...

Hola ante todo muchas gracias por su tiempo, le explico mi rutina, bueno en realidad ocupo esto para 3 celdas como le decía solo lo tengo para una y es lo siguiente
cada una de esas celdas toman valores que yo necesito almacenar para hacer una resumen al final del día por ejemplo
E5 yo le tecleo un código de productos
D5 la cantidad de productos
F5 el descuento del producto
Ahora cada vez que yo pongo un código es decir un numero en E5 ya logre que me almacene ese código con la macro que le pongo a continuación, pero ademas de eso quiero que también me recoja la imfomracion de las celdas D5 y F5 para al final del día poder hacer un resumen donde me coincida código con cantidad y descuento uno al aldo del otro y por columnas como lo hace dicha macro
Es decir todo es resumido a decir que yo lleno los 3 números en las 3 celdas y cuando de un clic fuera de la celda o enter vaya una copia a guardarse y cuando les pongas nuevos números borros estos y los nuevos se guardan a continuación de los anteriores
este es el ejemplo que tengo que me funciona hasta ahora pero solo con una celda
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$E$5" Then Exit Sub
With Range("AA" & Cells.Rows.Count).End(xlUp)
.Offset(1) = Target
.Offset(1, 1) = Format(Now, "hh:mm:ss")
End With
End Sub
Gracias por su tiempo ojala me pueda ayudar porque la verdad en hecho de todo encima de este código para que me traiga las otras celdas y nada
saludos tony
<div id="_mcePaste" style="position: absolute; width: 1px; height: 1px; overflow: hidden; top: 27px; left: -10000px;">?</div>
cada una de esas celdas toman valores que yo necesito almacenar para hacer una resumen al final del día por ejemplo
E5 yo le tecleo un código de productos
D5 la cantidad de productos
F5 el descuento del producto
Ahora cada vez que yo pongo un código es decir un numero en E5 ya logre que me almacene ese código con la macro que le pongo a continuación, pero ademas de eso quiero que también me recoja la imfomracion de las celdas D5 y F5 para al final del día poder hacer un resumen donde me coincida código con cantidad y descuento uno al aldo del otro y por columnas como lo hace dicha macro
Es decir todo es resumido a decir que yo lleno los 3 números en las 3 celdas y cuando de un clic fuera de la celda o enter vaya una copia a guardarse y cuando les pongas nuevos números borros estos y los nuevos se guardan a continuación de los anteriores
este es el ejemplo que tengo que me funciona hasta ahora pero solo con una celda
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$E$5" Then Exit Sub
With Range("AA" & Cells.Rows.Count).End(xlUp)
.Offset(1) = Target
.Offset(1, 1) = Format(Now, "hh:mm:ss")
End With
End Sub
Gracias por su tiempo ojala me pueda ayudar porque la verdad en hecho de todo encima de este código para que me traiga las otras celdas y nada
saludos tony
<div id="_mcePaste" style="position: absolute; width: 1px; height: 1px; overflow: hidden; top: 27px; left: -10000px;">?</div>

Tu rutina solo controla la celda E5, debieras controlar las otras 2 o sino ajustar la macro para que te controle la última, F y en ese momento pase los 3 campos.
Voy a optar por lo 2do.
No sé si querrás mantener la hora, así que los otros 2 campos los coloqué a continuación:
Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
'cancela si no es F5, o si se limpia la celda o si se limpian varias celdas juntas (Count> 1)
If Target.Address <> "$F$5" Then Exit Sub
If Target.Count > 1 Or Target.Value = "" Then Exit Sub
'pasa las 3 col: en AA celda D, en AB la hora, en AC celda E y en AD celda F (target)
With Range("AA" & Cells.Rows.Count).End(xlUp)
.Offset(1) = Target.Offset(0, -2)
.Offset(1, 1) = Format(Now, "hh:mm:ss")
.Offset(1, 2) = Target.Offset(0, -1)
.Offset(1, 3) = Target
End With
End Sub
PD) En mi página de macros encontrarás más ejemplos con instrucciones básicas, luego podes continuar con los manuales...
Voy a optar por lo 2do.
No sé si querrás mantener la hora, así que los otros 2 campos los coloqué a continuación:
Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
'cancela si no es F5, o si se limpia la celda o si se limpian varias celdas juntas (Count> 1)
If Target.Address <> "$F$5" Then Exit Sub
If Target.Count > 1 Or Target.Value = "" Then Exit Sub
'pasa las 3 col: en AA celda D, en AB la hora, en AC celda E y en AD celda F (target)
With Range("AA" & Cells.Rows.Count).End(xlUp)
.Offset(1) = Target.Offset(0, -2)
.Offset(1, 1) = Format(Now, "hh:mm:ss")
.Offset(1, 2) = Target.Offset(0, -1)
.Offset(1, 3) = Target
End With
End Sub
PD) En mi página de macros encontrarás más ejemplos con instrucciones básicas, luego podes continuar con los manuales...

Demaciado genenial le quedo muchisimas gracias de gran apuro me ha liberado llevo dias en esto, solo queria hacerle un ultima pregunta es que siempre me gusta conocer los procedimientos de manera general en este caso las celdas estan acontinuacion E5 D5 F5 si en otra momento que se va a llegar por nuevos retos que tengo de esta herramienta fuesen celdas mas separadas por ejemplo E10 J10 J20 estar estan mas aisladas como puediera modificar la macro para que me haga exactamente lo mismo y lo guarde en el mismo lugar que ustede lo puso , es que en el cogido me fije que usted puso solo F5 y sin embargo le trae todos los valores E5 D5 , la verdad que esta genial sin palabras pero si me gustaria saber eso como es visible para la macro F5 y trae todos las valores perfecto o con el ejemplo de las celdas que le puse , pero igual muchisimas gracias por su ayuda me fue super bien y estoy muy contento son sus respuestas

Hay disculpe y olvide otra preguntica y si fuse el caso igual al anterior pero fueran 4 celdas para traer en realidad de aquí fuese donde salio mi duda porque no veía la referencia en la macro y lo vi demasiado avanzado pero por ejemplo pudiese ser como le puse E10 J10, E20 J20 en realidad este es un ejemplo que se me ocurrido como hacer lo mismo y pensé usar la misma macro cambiando los valores
Esto funciona igual E10 decide todo y todo lo demás son valores que toman a partir de lo que registre E10 en el momento y se guardan de la misma manera
muchísima gracias por todo es que quede tan contento con esto que quise desarrollar un proyecto que tenia medio detenido y si me hace esto creo que seria una éxito, gracias de ante mano y cuando tenga un tiempito me ayuda
muchas gracias nuevamente y que tenga muy buen día }
Saludos tony
Esto funciona igual E10 decide todo y todo lo demás son valores que toman a partir de lo que registre E10 en el momento y se guardan de la misma manera
muchísima gracias por todo es que quede tan contento con esto que quise desarrollar un proyecto que tenia medio detenido y si me hace esto creo que seria una éxito, gracias de ante mano y cuando tenga un tiempito me ayuda
muchas gracias nuevamente y que tenga muy buen día }
Saludos tony

En primer lugar te recomiendo que visites mi página de macros donde dejo instrucciones generales para comenzar con conceptos básicos, como el Offset(fila, col)
Target es la celda modificada, por lo tanto en este ejemplo es F5
Target. Offset(0,-2) son 2 col a izquierda por lo tanto es col DE y se pasa a la col AA (Offset(1,0) es decir que no se cambió la col
Target. Offset(0,-1) es 1 col a la izquierda del target, por lo tanto es col E y se pasa a col AA. Offset(1,2), es decir a la fila de abajo (*) pero 2 col a derecha, es decir AC
Y así vas agregando cada celda a cada col, siempre moviéndote desde la F de origen a la AA de destino y acomodando según el Offset.
(*) Se pasa a la fila de abajo porque el With solo busca la última celda con datos en col AA, y necesitas copiar el nuevo valor en la fila de abajo
Hay otras maneras quizás un poco más claras de encontrar la primer fila libre, en mi página o en otros ejemplos que he dejado aquí en el tabl´n (usa el buscador)
PD) También te recomiendo mi manual de Programación VBA... para aprender de modo ordenado.
Target es la celda modificada, por lo tanto en este ejemplo es F5
Target. Offset(0,-2) son 2 col a izquierda por lo tanto es col DE y se pasa a la col AA (Offset(1,0) es decir que no se cambió la col
Target. Offset(0,-1) es 1 col a la izquierda del target, por lo tanto es col E y se pasa a col AA. Offset(1,2), es decir a la fila de abajo (*) pero 2 col a derecha, es decir AC
Y así vas agregando cada celda a cada col, siempre moviéndote desde la F de origen a la AA de destino y acomodando según el Offset.
(*) Se pasa a la fila de abajo porque el With solo busca la última celda con datos en col AA, y necesitas copiar el nuevo valor en la fila de abajo
Hay otras maneras quizás un poco más claras de encontrar la primer fila libre, en mi página o en otros ejemplos que he dejado aquí en el tabl´n (usa el buscador)
PD) También te recomiendo mi manual de Programación VBA... para aprender de modo ordenado.

Muy bien, gracias ya entendí como se mueven las celdas por lo que me puso y ademas que me puse a leer los manuales que me paso que están muy completos, mevoy a poner ha hacer ejemplos porque creo que esto de las macros resuelven muchos problemas en exel, pero ante todo muchas gracias por su ayuda y su tiempo dedicado
Que tenga buen ndiua saludos tony
Que tenga buen ndiua saludos tony
- Compartir respuesta
2 comentarios

Muy buenas tardes, ¿me podría apoyar por favor? Requiero hacer el mismo programa que se muestra anterirormente en las conversaciones sin embargo, yo solo meto una función en la celda f5 la cual es Aleatorio(), y genero un numero de iteraciones en las que cambia el valor de la celda. La pregunta es como logro hacer que cada iteración se escriba como un historial en otra celda. - alan gonzàlez iglesias
Hola Alan: habrás leído el mensaje del foro al publicar este comentario: que aquí no se deben colocar nuevas consultas. Debes colocarlas en el tablón.... y en este caso colocá el link de esta consulta para que pueda tomar nota del tema que habíamos tratado... aunque tratándose del año 2011 seguramente hoy habrá que introducir algunos cambios. Sdos! - Elsa Matilde