Día 36: Formularios en Excel VBA: Ingresar datos sin duplicados para hacer una base de datos en Excel #Reto40Excel 2016

Para los que saben o algo han escuchado de los formularios en Excel, reconocen que esta herramienta es un elemento fundamental en lo que se refiere a la optimización de procesos y productividad cuando se trabaja con en Excel en sus múltiples usos. Con base en el conocimiento que se tenga de esta herramienta, el alcance al que se puede llegar es mucho mayor, razón por la cual hemos decidido compartir cinco vídeos correspondientes a los formularios en Excel, el de la presente entrega corresponda a la primera de estas cinco, la cual corresponde a Día 36, Formularios en Excel VBA: Ingresar datos sin duplicados para hacer una base de datos en Excel #Reto40Excel 2016.

Con los formularios en Excel se pueden automatizar el ingreso de información permitiendo controlar el ingreso incorrecto de la información, permite ingresar los datos de una forma más fácil y rápido y si la pregunta es ¿cómo crear una base de datos en Excel?, a través de los formularios de Excel esta necesidad se puede realizar de una forma óptima, ya que permite organizar la información y definir controles para que la base de datos en Excel tenga información consistente, disponible y no redundante.

Especialistas En Excel

En el material de hoy se explica paso a paso cómo trabajar con Formularios en Excel VBA con el fin de Ingresar datos sin duplicados para hacer una base de datos en Excel. Para realizar esto es importante tener en cuenta qué información se va a almacenar, qué tipo de datos se tendrán en cuenta para cada campo y sobre todo, cuál es el campo o campos llaves que permitirán realizar la evaluación para definir si un registro se repite o no, en el caso de hoy se explica el uso de formularios en Excel para el ingreso de datos de clientes, donde no se permita el ingreso de un cliente cuyo número de identificación se ha ingresado previamente, es decir, solo se permitirá el ingreso o registro a la base de datos de Excel, aquellos registros cuyo número de identificación no exista en la base de datos de Excel.

Los pasos para trabajar con formularios en Excel VBA con el fin de Ingresar datos sin duplicados para hacer una base de datos en Excel son los siguientes

  1. Crear función VBA para controlar el ingreso de número de identificación repetida
  2. Crear función que registre la información en la hoja de cálculo de Excel, la cual utiliza o hace el llamado a la función que se menciona en el punto anterior
  3. Crear formulario en Excel con VBA para ingresar datos sin duplicados
  4. Validar que se ingresen los datos completos desde el formulario en Excel
  5. Adicionar botón en formulario en Excel con el fin que haga el llamado a la función que registra la información
  6. En el caso que no exista registro con el número de identificación que se ingresa, se debe mostrar mensaje informando la novedad, de lo contrario se ingresa
  7. Cuando se registre la información, se debe mostrar mensaje exitoso de confirmación de la operación y se debe limpiar la información que se encuentran en los campos de los formularios en Excel

Elementos que se explican para crear Formularios en Excel VBA con el fin de Ingresar datos sin duplicados para hacer una base de datos en Excel:

– Formularios en Excel
– Base de datos en Excel
– Formulario VBA Excel
– Ingreso de datos sin duplicados

Para no perderte nada de lo que compartimos en las redes sociales, puedes seguirnos a través de los siguientes medios:

Youtube: https://goo.gl/FrswaC
Facebook: https://goo.gl/W5dIsa
Twitter: https://twitter.com/ee_excel
Instagram: https://goo.gl/xadGB5
Linkedin: https://goo.gl/Os1boH

A continuación la explicación detallada para Ingresar datos sin duplicados para hacer una base de datos en Excel:

Click >> Aquí << para descargar ejercicio del día

Comunidad Triple EEE

1) Recibe estos vídeos GRATIS >> https://goo.gl/FrswaC

2) Suscríbete a este curso gratuito para aumentar tu productividad en Excel un 80% y obtén 4 regalos adicionales al suscribirte a este curso: http://goo.gl/zNqh0o

Artículos anteriores:

  1. Día 35 – Actualizar y eliminar en Access desde Excel #Reto40Excel 2016
  2. Día 34 – ¿Cómo Insertar en Access desde Excel? #Reto40Excel 2016
  3. Día 33 – Consultar en Access desde Excel con varias condiciones SQL y limpiando datos #Reto40Excel 2016
  4. Día 32 – Consultar en Access desde Excel con condición SQL #Reto40Excel 2016
  5. Día 31 – Consultar Tabla Access desde Macro Excel VBA #Reto40Excel 2016
  6. Día 30 – Lista desplegable en Excel 2016 sin Duplicados #Reto40Excel 2016
  7. Día 29 – Fórmulas Matriciales en Excel – Nivel Avanzado #Reto40Excel 2016
  8. Día 28 – Fórmulas Matriciales en Excel – Nivel Básico #Reto40Excel 2016
  9. Día 27 – Cómo mostrar u ocultar hojas con hipervínculos en Excel #Reto40Excel 2016
  10. Día 26 – Crear hipervínculos en Excel a las hojas automáticamente #Reto40Excel 2016
  11. Día 25 – Consultar por Fila y Columna en Excel con la función SUMA #Reto40Excel 2016
  12. Día 24 – Gestión de actividades en Excel, cronograma en Excel – Parte 2 #Reto40Excel 2016
  13. Día 23 – Gestión de actividades en Excel Parte 1 #Reto40Excel 2016
  14. Día 22 – Exportar Excel a PDF con macros de Excel #Reto40Excel 2016
  15. Día 21 – Diferentes listas desplegables en Excel en una misma celda con validación de datos #Reto40Excel 2016
  16. Día 20 – Cómo importar hojas de Excel a Excel #Reto40Excel 2016
  17. Día 19 – Control de horas ingresadas con Formato condicional en Excel #Reto40Excel 2016
  18. Día 18 – Tablas dinámicas en Excel – ¿Cómo agrupar manualmente? #Reto40Excel 2016
  19. Día 17 – Crear nuevos archivos en Excel a partir de la hojas, copiar hojas de Excel automáticamente #Reto40Excel 2016
  20. Día 16 – UDF: Función Definida por el usuario Básica #Reto40Excel 2016
  21. Día 15 – Recordatorio en Excel cuando falten días para una fecha – Parte 2 #Reto40Excel 2016
  22. Día 14 – Recordatorio en Excel cuando falten días para una fecha – Parte 1 #Reto40Excel 2016
  23. Día 13 – Macro en Excel para ingresar datos con mensaje de confirmación #Reto40Excel 2016
  24. Día 12 – Valores más altos en Excel sin repetirlos #Reto40Excel 2016
  25. Día 11 – Emitir sonido Beep en Excel con macro VBA #Reto40Excel 2016
  26. Día 10 – Insertar Comentarios en Excel con macros en Excel #Reto40Excel 2016
  27. Día 9 – Ingresos y Egresos en Excel con Macro en Excel #Reto40Excel 2016
  28. Día 8 – Comodines en Excel #Reto40Excel 2016
  29. Día 7 – Macro en Excel para extraer datos con condiciones #Reto40Excel 2016
  30. Día 6 – Macro en Excel para abrir archivos externos con condición IF – Reto40Excel v.2016
  31. Día 5 – Sumar últimas celdas en Excel – Reto40Excel v.2016
  32. Día 4 – Formato condicional para mostrar repeticiones a partir de una variable – Reto40Excel v.2016
  33. Día 3 – Ordenar con letras y números en Excel – Reto40Excel v.2016
  34. Día 2 – Definir cálculo con Función SI y lista desplegable en Excel – Reto40Excel v.2016
  35. Día 1 – Validación de datos en Excel para limitar cantidad y contenido en una celda – Reto40Excel v.2016
  36. Lanzamiento de Reto40Excel v.2016

31 comentarios en “Día 36: Formularios en Excel VBA: Ingresar datos sin duplicados para hacer una base de datos en Excel #Reto40Excel 2016”

  1. HOLA INGENIERO, LO ADMIRO POR LO QUE REALIZA EN EXCEL, ESTOY APRENDIENDO MUCHO DE USTED VOY CADA DIA AL PIE DE LOS QUE ESTA PUBLICANDO SON MUY INTERESANTE LO QUE REALIZA EN EXCEL JUNTO CON MACROS, A MI ME FASINA TRABAJAR EN EXCEL YA QUE PRACTICO EN CASA CON MI TIEMPO LIBRE, Y ME GUSTARIA QUE ME PUDIERA AYUDAR EN UN PROBLEMITA, (EN UNA BASE DE DATOS DE CUENTAS POR PAGAR, ME GUSTARIA SABER COMO PUEDO HACER PARA IDENTIFICAR QUE NUMERO DE COMPROBANTE Y EL VALOR ME FALTA DE PAGAR.Y IDENTIFICAR DESDE OTRA HOJA SI ESTA CANCELADO O PENDIENTE,,,) SI NO TANTO LA MOLESTIA LE PEDIRIA ESE FAVOR, MUCHAS GRACIAS BUEN DIA, CUIDESE, ESPERO ME PUEDA COLABORAR……..

  2. Pingback: Formularios en Excel VBA: Actualizar datos de una base de datos en Excel

  3. Pingback: Formularios en Excel: Mostrar imágenes de base de datos en Excel

  4. Pingback: Búsqueda Implacable en Excel, Parte 2 de 4

  5. Pingback: Búsqueda Implacable en Excel, Buscar en Access desde Excel

  6. Pingback: Los 10 tipos de errores más comunes en macros en Excel con VBA y que muy pocos saben cómo tratarlos, Runtime errors

  7. Pingback: Los 10 tipos de errores más comunes en macros en Excel con VBA y que muy pocos saben cómo tratarlos, Runtime errors - Parte 2 de 2 - Especialistas En Excel

  8. Pingback: 30 Trucos y Tips de Excel que toda persona debe saber - Parte 1 - Especialistas En Excel

  9. Pingback: 30 Trucos y Tips de Excel que toda persona debe saber – Parte 2 - Especialistas En Excel

  10. Estimado.

    Queria molestarlo tenfo un FORM en el cual le pido que me extraiga los 3 dígitos iniciales del nombre y los 3 finales.
    Pero necesito que cuando esten repetidos se se aguegue un 02 o 03 si concuerdan los nombres
    ]Ej: Usuario Jorge Quiroz me extrae JOR y ROZ agregándoles 01 pero si JORROZ esta repetido me agregue 02 si hay duplicación.
    Bueno espero me pueda ayudar y agradecido desde ya.
    Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim Texto As Variant
    Dim Caracter As Variant
    Dim largo As String
    On Error Resume Next
    Texto = Me.TextBox4.Value
    largo = Len(Me.TextBox4.Value)
    For i = 1 To largo
    Caracter = CInt(Mid(Texto, i, 1))
    If Caracter “” Then
    If Not Application.WorksheetFunction.IsText(Caracter) Then
    Me.TextBox4.Value = Replace(Texto, Caracter, “”)
    Else
    End If
    End If
    Next i
    On Error GoTo 0
    Me.TextBox11.Text = Me.TextBox2.Text & “.” & Me.TextBox3.Text & “@tmf-group.com”
    ‘ If TextBox11 = “” Then Exit Sub
    On Error GoTo 0
    TextBox6.Text = UCase(Left(TextBox2.Text, 3)) & UCase(Right(TextBox3.Text, 3)) & “01”
    TextBox6.SetFocus

    End Sub

    Saludos cordiales.

    1. Especialistas En Excel

      Hola Jorge, gracias por comentar, recomendamos éste contenido para que veas como se hace una búsqueda sin duplicar datos.
      Entonces teniedo JORROZ utiliza la función del contenido para saber si hay duplicado. Si ya existe agregarle 01, vuelves a buscar JORROZ01 con la función si existe le agregas 02 y así sucesivamente; sería algo como,

      Hay una función en el contenido sugerido que evalúa duplicados (digamos función buscarDuplicado())
      esa función devuelve un valor que confirma si hay duplicado entonces, en un ciclo coloca por ejemplo

      variable = JORROZ
      For i = 0 To 30
      IF buscarDuplicado(variable) = 1 THEN ‘Suponiendo que al devolver 1 no encontró duplicados
      Exit For
      End IF
      variable = JORROZ & i ‘ EN cada repetición concatena el número que lleve i
      Next i
      Saludos!!

  11. Que tal Alfonso, fuera posible de que me mandaras por email el ejercicio terminado? Seria de gran ayuda para mi proyecto escuela que sigan desarrollando mis compan-eros y yo.

    gracias

    1. Especialistas En Excel

      Hola José, todos los archivos de los vídeos son descargables, abajo del vídeo haces clic y descargas el archivo correspondiente. Saludos

  12. Gracias por el tutorial, estoy trabajando para mejorar la gestión de la bodega de materiales en la empresa donde actualmente trabajo, pero tengo un problema, cuando quiero escribir datos a otra hoja del mismo libro la primera fila lo hace perfecto, pero luego las siguientes solo me sobrescribe la misma fila, y no encuentro como solucionar este inconveniente, podrías ayudarme. Saludos cordiales.

    1. Especialistas En Excel

      Hola Nelson, en la macro que se trabaja en éste contenido hay una función llamada insertarRegistro, observa la variable ultFila, esta guardará la última fila con algo ingresado en el documento, esto es para saber cuál es el último registro y si no es el primero, en la variable filaExisteRegistro = ultFila + 1 es decir, será la fila siguiente a la última, cuando se haga el registro de los datos se harán en cada columna correspondiente y en la fila filaExisteRegistro de esta manera se garantiza el registro de todos los datos. Esperamos que puedas resolver tu inquietud, mira el contenido las veces que sea necesario y revisa tu código. Saludos

  13. Pingback: 15 Trucos y Tips de Tablas dinámicas en Excel

  14. Pingback: 15 Trucos y Tips de Tablas dinámicas en Excel que muy pocos conocen

  15. Pingback: Búsqueda Implacable en Excel – Sql Server desde Excel

  16. Pingback: Búsqueda Implacable en Excel

  17. Pingback: Formularios en Excel VBA: Eliminar en una base de datos en Excel

  18. DISCULPE LAS MOLESTIAS
    Pero al ingresar los datos me aparecen en la misma fila y no se van desplazando hacia abajo e intente descargar el archivo pero me sale en blanco y diciendo que empiece a realiarlo

    p. d. ya estoy registrado en su pagina

    1. Especialistas En Excel

      Hola Ángel, revisa las veces que sea necesario el código que se muestra en el vídeo. Respecto al archivo, la dinámica del Reto40Excel es que hagas un ejercicio con lo aprendido en el contenido. Saludos

  19. Buenos días,
    En primer lugar, permítanme agradecer la labor que desarrollan. En varios momentos me han sacado de apuros con sus explicaciones.
    Llevo unos días intentando modificar el Reto40, para que busque duplicados en dos columnas, pero no soy capaz de conseguirlo. Es fácil con la validación de datos, pero quiero ingresar los datos a través de un formulario, como el de este Reto y no lo consigo.

    ¿pueden darme alguna indicación?

    Muchas Gracias
    Cervigón

    1. Especialistas En Excel

      Hola Cervigón, gracias por tu comentario, te mostramos dos formas:
      1) Utiliza la función filaExisteRegistro dos veces, por ejemplo:
      existe = filaExisteRegistro(noIdentidad, “B8:B” & ultFila), luego utiliza otra variable que reciba la coincidencia de la otra columna
      existe1 = filaExisteRegistro(noIdentidad, “E8:E” & ultFila). Teniendo las dos coincidencias haces una condición para saber si el dato está repetido o no.

      2) Si las columnas están juntas, puedes simplemente mandar como parametro el rango de las dos columnas por ejemplo;
      existe = filaExisteRegistro(noIdentidad, “B8:C” & ultFila), de esa manera la función traerá la coincidencia de las columnas B y C de una sola
      Pueden haber más formas de hacerlo, en Excel siempre hay varias formas de resolver una problemática. Saludos

      1. Muchas gracias por la respuesta.
        Seguí vuestro consejo y en el ejemplo utilicé dos variables, “registro” y “registro1” y para buscar las coincidencias utilicé la función countifs, o sea, algo así Application.WorksheetFunction.CountIfs(rango1,registro,rango2,registro1) y funcionó bien.
        Grtacias por abrirme los ojos y guiarme hasta la solución.
        Saludos

  20. Lizzet Tolentino

    Estimado Alfonso, muy prácticos y explicativos tus videos, realmente me ayudan bastante.
    Tengo un problema con el reto 40 pues cuando ingreso cualquier documento aún con la base de datos vacía me sale que el nro de documento ya ha sido registrado, por favor tu seguro apoyo.
    Function insertarRegistro(noDocumento As String, TipodeDocumento As String, Cliente As String, Fechadeemisión As String, Vencimento As String, Importe As String, Detalledelservicio As String) As String
    Dim ultFila, filaRegistro, existe As Long
    Dim confirmacionRegistro As String

    confirmacionRegistro = “NO”
    ultFila = Range(“A” & Rows.Count).End(xlUp).Row

    If ultFila < 6 Then
    filaRegistro = 6
    Else
    filaRegistro = utlfila + 1
    End If

    If ultFila 0 Then
    MsgBox “El número de documento ya existe en la base de datos!”
    insertarRegistro = confirmacionRegistro
    Exit Function
    End If

    Registrodeventas.Cells(filaRegistro, 2) = noDocumento
    Registrodeventas.Cells(filaRegistro, 3) = TipodeDocumento
    Registrodeventas.Cells(filaRegistro, 4) = Cliente
    Registrodeventas.Cells(filaRegistro, 5) = Fechadeemisión
    Registrodeventas.Cells(filaRegistro, 6) = Vencimento
    Registrodeventas.Cells(filaRegistro, 7) = Importe
    Registrodeventas.Cells(filaRegistro, 8) = Detalledelservicio

    MsgBox “Registro almacenado exitosamente!”
    confirmacionRegistro = “Ingresado”
    insertarRegistro = confirmacionRegistro
    End Function

    Private Function filaExisteRegistro(noDocumento As String, rangoConsulta As String) As Long
    Dim numeroFila As Long

    numeroFila = 0

    With Registrodeventas.Range(rangoConsulta)
    Set c = .Find(noIdentificacion, LookIn:=xlValues)

    If Not c Is Nothing Then
    numeroFila = c.Row
    End If
    End With

    filaExisteRegistro = numeroFila

    End Function
    Sub verFormularioIngresoDatos()
    frmIngresodatos.Show
    End Sub

    1. Especialistas En Excel

      Hola Lizzet, entre
      confirmacionRegistro = “NO”
      y
      If ultFila 0 Then
      MsgBox “El número de documento ya existe en la base de datos!”
      insertarRegistro = confirmacionRegistro
      Exit Function
      End If

      Debe haber una parte de código que evalúe o el llamado a una función que valide si existe el registro o no.
      No entendemos qué es If ultFila 0 Then.

      Si esa parte siempre tendrás confirmacionRegistro igual a “NO”, en el vídeo se utiliza
      existe = filaExisteRegistro(noIdentidad, “B8:B” & ultFila)
      Por favor, mira el vídeo las veces que sea necesario. Gracias por comentar, saludos

  21. Sánchez Juan Javier

    Estimado
    Excelente trabajo, tengo una pregunta habra la posibilidad de que antes que se guarde los datos del formulario se pueda realizar la impresión, ya que en mi caso son ordenes de trabajo que las tenemos pre impresos.
    Por la favorable y apoyo de ante mano muchas gracias..

Deja un comentario

Tu dirección de correo electrónico no será publicada.