Validar datos con Macro

Srs, espero puedan ayudarme.

Tengo un excel con 11 columnas a la cual le voy pegando datos a todas las columnas en la misma fila. Para que lo imaginen bien, es una cuenta corriente donde en la columna 1 dice fecha en la dos banco en la tres importe. Etc.

Necesito que al intentar copiar los datos a una fila nueva, si los valores de la columna 1, 3 y 4 ya están ingresados en otra fila me diga que es un error y no me permita avanzar.

Necesito que sea si los tres datos se dan en conjunto en una misma fila, porque en diferentes filas es probable que lo haga.

Si no se entiende por favor me avisan.

Muchas gracias

1 Respuesta

Respuesta
1

Te preparo la macro y te la envío.

Saludos. Dam

Te anexo una propuesta de macro, la cual te pregunta si quieres que la fila se quede, si contestas que Si, la fila se queda, si contestas que No, la fila se borra. Lo puse así, porque no dijiste exactamente, qué debía hacer la macro si se encontraban los datos.

La macro deberá ponerse en un evento, para que funcione automáticamente cada que copies datos en las columnas A, C o D.

Sigue las Instrucciones para poner la macro en worksheet
1. Abre tu hoja de excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
4. Del lado derecho copia la macro

Private Sub Worksheet_Change(ByVal Target As Range)
'por.dam
If Not Intersect(Target, Columns("A:D")) Is Nothing Then
    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row - 1
        If Cells(i, "A") = Cells(Target.Row, "A") And _
           Cells(i, "C") = Cells(Target.Row, "C") And _
           Cells(i, "D") = Cells(Target.Row, "D") Then
            If MsgBox("La fila que intentas copiar ya existe." & vbCr & vbCr & _
                      "      Quieres que se quede? ", vbCritical + vbYesNo, _
                      "Error !!! ") = vbYes Then
                'la fila se queda
            Else
                Application.EnableEvents = False
                Rows(Target.Row).EntireRow.Delete
                Application.EnableEvents = True
            End If
            Exit For
        End If
    Next
End If
End Sub

La macro funciona cuando copias una sola fila, si copias varias filas, solamente considera la primer fila de todas filas que estás copiando, ya que comentaste que copias a una fila nueva.

Prueba y me comentas

Saludos. Dam
Si es lo que necesitas.

Dam, muchas gracias

No puedo hacerlo funcionar, pero no entiendo porque. Para responder a tus preguntas, al archivo le voy pegando a cada fila varias columnas en el mismo momento. Y también puede ser que copie datos a varias filas (que cada una carga datos en muchas columnas).

También tiene que borrarse la fila cuando ocurre que lo valores de "x" fila son iguales en las columnas D, H y K de otra fila. Cada fila es un deposito y quiero evitar duplicaciones por error.

Cargo la macro pero no me aparece nada, espero puedas entenderme.

Sdos

Te envío mi archivo, prueba copiar una nueva línea con los mismos valores que ya existen en las columnas A, C y D

https://www.dropbox.com/s/phmqv2atdk5sedf/valida%20acd.xls

Avísame tus comentarios

Saludos. Dam

Buenísimo, pude hacerla funcionar.

Lo único que faltaría es que generalmente copio muchas lineas juntas, porque copio todos los depósitos de un dia

Lo que tendría que hacer es borrarme todos las filas que estoy intentando ingresar. Aunque una sola sea la que tiene la duplicación. Hoy como vos me dijiste, solo borra la primer linea.

Antes que nada debo agradecerte por lo hecho hasta aca..

Prueba con este archivo, ya te borra 1 o varias filas duplicadas.

https://www.dropbox.com/s/phmqv2atdk5sedf/valida%20acd.xls

Solamente borra si las columnas A, C y D hay duplicados, como lo solicitaste en la pregunta inicial, si requires más cambios, por favor, podrías finalizar esta pregunta y crear una nueva con lo que necesites.

Saludos. Dam

Añade tu respuesta

Haz clic para o