.
Hoy muestro en este post como cargar un dato y que automáticamente se verifique si ya fue cargado en la base de datos para evitar cargar datos duplicados, es decir muestro como cargar un dato en Excel y saber si está duplicado.
Recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.
La macro para determinar si un dato está duplicado controla la celda B1 y B2 en forma conjunta, es decir puede estar duplicado el N° de Recibo, pero el cliente es distinto, no puede haber un mismo N° de recibo y el mismo cliente, esa duplicidad la macro no la permite.
Al ingresar el número de recibo, seguidamente se debe ingresar el nombre del cliente, después de actualizar esa celda automáticamente se buscan los datos del cliente, al presionar el botón GUARDAR, se procede a guardar el registro, donde previamente para guardarlo controla que no haya en la base de datos un mismo número de Recibo y Cliente, en caso positivo el dato está duplicado y no lo guarda, en caso negativo guarda el registro en la hoja Base de Datos.
Desde el final descarga el archivo para que puedas observar su funcionamiento, el código es GRATUITO de libre acceso.
El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlas, buscar en listbox mientras escribes en textbox, ordenar hojas libro excel por su nombre, conectar Excel con Access y muchos ejemplos más.
if (payload.eventType == ‘subscribe’) {
// Add code to handle subscribe event.
} else if (payload.eventType == ‘unsubscribe’) {
// Add code to handle unsubscribe event.
}
if (window.console) { // for debugging only
window.console.log(‘YT event: ‘, payload);
}
}
Código que se inserta en un módulo
Sub borrar()
Range(«B1:B6»).ClearContents
End SubSub Grabar()
Dim uf, ucw, r1, r2 As String
Set a = Sheets(«Hoja1»)
Set b = Sheets(«BaseDatos»)
If a.Range(«B1») = Empty Or a.Range(«B2») = Empty Or a.Range(«B6») = Empty Then
MsgBox («Es obligatorio llenar celdas B1 a B6»), vbCritical, «AVISO»
Exit Sub
End If
uf = b.Range(«A» & Rows.Count).End(xlUp).Row + 1
b.Cells(uf, «A») = a.Range(«B1»)
b.Cells(uf, «B») = a.Range(«B2»)
b.Cells(uf, «C») = a.Range(«B3»)
b.Cells(uf, «D») = a.Range(«B4»)
b.Cells(uf, «E») = a.Range(«B5»)
b.Cells(uf, «F») = a.Range(«B6»)
borrar
MsgBox («Los datos se guardaron con éxito»), vbExclamation, «AVISO»
End Sub
Código que se inserta en un WorkSheet Hoja1
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Dim uf, pf, busco, dato, codigo
If Target.Column = 2 And Target.Row = 2 Then
Set a = Sheets(«Hoja1»)
Set b = Sheets(«BaseDatos»)
Set c = Sheets(«Clientes»)
pf = 2
uf = b.Range(«A» & Rows.Count).End(xlUp).Row
ufc = c.Range(«A» & Rows.Count).End(xlUp).Row
r = «A2:A» & ufc
Do
busco = a.Range(«B1») & a.Range(«B2»)
dato = b.Cells(pf, «A») & b.Cells(pf, «B»)
If busco = dato Then
MsgBox («Dato duplicado»), vbCritical, «AVISO»
a.Range(«B3:B6»).ClearContents
Exit Sub
Else
busco = a.Range(«B2»)
Set codigo = c.Range(r).Find(busco, LookIn:=xlValues, LookAt:=xlWhole)
If Not codigo Is Nothing Then
a.Range(«B3») = c.Cells(codigo.Row, «B»)
a.Range(«B4») = c.Cells(codigo.Row, «C»)
a.Range(«B5») = c.Cells(codigo.Row, «D»)
End If
End If
pf = pf + 1
Loop While pf <= uf
End If
End Sub
Range(«B1:B6»).ClearContents
End Sub
Sub Grabar()
Dim uf, ucw, r1, r2 As String
Set a = Sheets(«Hoja1»)
Set b = Sheets(«BaseDatos»)
If a.Range(«B1») = Empty Or a.Range(«B2») = Empty Or a.Range(«B6») = Empty Then
MsgBox («Es obligatorio llenar celdas B1 a B6»), vbCritical, «AVISO»
Exit Sub
End If
uf = b.Range(«A» & Rows.Count).End(xlUp).Row + 1
b.Cells(uf, «A») = a.Range(«B1»)
b.Cells(uf, «B») = a.Range(«B2»)
b.Cells(uf, «C») = a.Range(«B3»)
b.Cells(uf, «D») = a.Range(«B4»)
b.Cells(uf, «E») = a.Range(«B5»)
b.Cells(uf, «F») = a.Range(«B6»)
borrar
MsgBox («Los datos se guardaron con éxito»), vbExclamation, «AVISO»
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Dim uf, pf, busco, dato, codigo
If Target.Column = 2 And Target.Row = 2 Then
Set a = Sheets(«Hoja1»)
Set b = Sheets(«BaseDatos»)
Set c = Sheets(«Clientes»)
pf = 2
uf = b.Range(«A» & Rows.Count).End(xlUp).Row
ufc = c.Range(«A» & Rows.Count).End(xlUp).Row
r = «A2:A» & ufc
Do
busco = a.Range(«B1») & a.Range(«B2»)
dato = b.Cells(pf, «A») & b.Cells(pf, «B»)
If busco = dato Then
MsgBox («Dato duplicado»), vbCritical, «AVISO»
a.Range(«B3:B6»).ClearContents
Exit Sub
Else
busco = a.Range(«B2»)
Set codigo = c.Range(r).Find(busco, LookIn:=xlValues, LookAt:=xlWhole)
If Not codigo Is Nothing Then
a.Range(«B3») = c.Cells(codigo.Row, «B»)
a.Range(«B4») = c.Cells(codigo.Row, «C»)
a.Range(«B5») = c.Cells(codigo.Row, «D»)
End If
End If
pf = pf + 1
Loop While pf <= uf
End If
End Sub
.
If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.
Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends