Macro que me diga cual fue la ultima celda modificada dentro de un rango de celdas

Esto es algo que puedo hacer con fórmulas dentro del libro, pero no quiero agregar más fórmulas al libro, por eso busco que se haga con una macro.

Tengo el rango de celdas A1:E3

Lo que necesito es que en el rango F1:F3, me diga cual fue la ultima columna modificada de una fila y que su longitud sea mayor de 3 caracteres.

Ejemplo:

Si modifico la celda A1, y la captura es mayor igual a 3 caracteres

... La celda F1 me muestra el valor "1", porque la ultima columna modificada fue la primer columna

Si modifico la celda B3, y la captura es mayor igual a 3 caracteres

... La celda F3 me muestra el valor "2", porque la ultima columna modificada fue la segunda columna

Si modifico la celda D2, y la captura ... NO ES MAYOR a 3 caracteres

... La celda F2 me DEBE muestrar el valor 1, 2, 3 o 4, dependiendo de la ultima columna modificada y que su longitud sea mayor a 3 caracteres

Sin más por el momento.

1 Respuesta

Respuesta
3

Entrá al Editor de macros, seleccioná con doble clic desde el panel a tu izquierda el objeto HOJA donde vayas a trabajar y allí copiá esta macro:

Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
'se controla lo ingresado en rango A1:E3
If Intersect(Target, Range("A1:E3")) Is Nothing Then Exit Sub
'si se modifican varias celdas (x ej para borrarlas) no se ejecuta
If Target.Count > 1 Then Exit Sub
'si largo < 3 caracteres no se ejecuta
If Len(Target.Value) <= 3 Then Exit Sub
'coloca en col F la col modificada
Cells(Target.Row, "F") = Target.Column
End Sub

Va el código explicado por si necesitas modificar los rangos.

Si esta respuesta resuelve tu consulta no olvides valorarla.

Hola Elsa Matilde buen día desde México, he insertado tu macro y ha funcionado muy bien, le he hecho algunas pruebas y solo me queda una cuestión. 

Sucede que al ya tener datos capturados con una longitud > 3 en A1:E1, la celda F1 contiene el valor "5" ya que fue la ultima columna modificada y con longitud > 3, pero digamos que borramos el contenido de E1, o que modificamos el contenido de E1 pero la longitud no es mayor a 3, entonces en F1 debe mostrar el valor "4", ya que es la ultima columna que contiene datos con una longitud > 3.

Espero haberme explicado bien. Gracias Elsa

Si, pero te faltó analizar otras situaciones: mencionas el ejemplo de que E1 sea la última y la anterior la 4ta (D1)

Qué pasa si primero borras o modificas D1 por un valor menor... luego al modificar E1 ya no debe indicarte como última la D sino ... quien sabe cuál.

Quizás eso no pase nunca, desconozco se hace la carga en general. Explicame qué harás en una situación como la que te mencioné.

Si hay que replantear todo el proceso te pediré que valores y demos por cerrada esta consulta que responde a tu primer planteo y empecemos otra.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas