Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

UDF aplicado al conteo de datos

| 4 comentarios

UDF APLICADO AL CONTEO DE DATOS

 

Este UDF fue creado con el fin de contar las diferentes variables que existe en un Resort sobre sus empleados. Dichas variables son el género del trabajador(a), el país del que proviene, el puesto de trabajo asignado y la edad de cada uno. El proyecto de encarga de contabilizar todas las variables de manera que en un futuro, cuando se quieran realizar cambios de personal o reclutamiento, se obtenga una estadística la cual permita ayudar a mejorar el clima laboral de la empresa, ya que las personas vienen de diferentes países y tienen edades diferentes (cabe decir que el programa solo arroja los conteos, mas no calcula datos estadísticos).

Los empleados que el jefe de RR.HH. ponen las siguientes condiciones:

1)      Los empleados deben pertenecer a los países de:

-          Argentina

-          Brasil

-          Perú

-          Chile

-          EE.UU.

2)      Los puestos disponibles en la empresa son:

-          Lift attendant (Operario de silla elevadoras)

-          Cashier (Cajero)

-          Cook Assistant  (Asistente de cocina)

-          Facility (“Limpieza y mantenimiento”)

-          Rental (“Renta de equipos de aventura sobre nieve”)

-          Dish washer  (“Limpia platos”)

3)      No hay límites ni para edades ni para géneros

PROCEDIMIENTO

  1. Primero creé 3 botones:
Botones1 UDF aplicado al conteo de datos
             a. El primero sirve para ingresar datos, al darle click aparece este formulario
Formulario 1 1 300x207 UDF aplicado al conteo de datos
(Para mayor visualización de la imagen, hacer click en la misma)
      - Se presiona el botón “Activar” para activar las opciones de las listas.
Formulario 2 300x195 UDF aplicado al conteo de datos
(Para mayor visualización de la imagen, hacer click en la misma)
   - Y finalmente se presión Grabar para ir grabando los datos de los trabajadores.
Excel 300x92 UDF aplicado al conteo de datos
(Para mayor visualización de la imagen, hacer click en la misma)
  b. El segundo sirve para limpiar la base de datos, es decir todos los datos de los empleados registrados hasta entonces.
  c. Y el último sirve para calcular los datos a obtener que son:

-          La cantidad de personas por país

-          La cantidad de empleados por puesto

-          Cantidad de hombres y mujeres

-          Y promedio de edad.

Resultados 300x48 UDF aplicado al conteo de datos

(Para mayor visualización de la imagen, hacer click en la misma)

2. Luego aplique los siguientes puntos:

-          Declaré mis variables a nivel de todo el proyecto

Variables1 UDF aplicado al conteo de datos

(Para mayor visualización de la imagen, hacer click en la misma)

-          Utilicé las estructura

For… next

Select case

If… end if

For next 300x157 UDF aplicado al conteo de datos

(Para mayor visualización de la imagen, hacer click en la misma)

Select Case UDF aplicado al conteo de datos

-Use esta aplicación para llegar a la última celda en uso con fines de lograr los objetivos en este proyecto

Aplicacion 300x35 UDF aplicado al conteo de datos

(Para mayor visualización de la imagen, hacer click en la misma)

A continuacion se presenta el proyecto

UDF APLICADO AL CONTEO DE DATOS

 

Atte. Jesus Zarate

4 comentarios

  1. Buenas estuve viendo este ejercicio que es muy interesante, me he dado cuenta de alguno detalles para mejorar la funcionalidad del Ejercicio.

    Si borran las dos filas que tienen como país EE.UU cuando hacen clic en RESULTADOS donde cuenta los Países en EE.UU les va aparecer 1 donde tendría que aparecer 0.
    Si prueban lo que digo, con los Países, Puestos, género; borran las filas siempre les va a quedar en el resultado 1 y no 0
    Con el promedio también es un cosa similar si dejan una FILA saca el promedio como si hubieran 2.
    Me di cuenta de estos pequeños detalles, espero lo puedan revisar y arreglen estos puntos,

    Si pude mejorar estos detalles, la funcionalidad del Botón Activar esta interesante y aún no logro realizarlo; ¡muy bueno el ejercicio!.

  2. Buenas.

    La aplicación del macros al conteo de datos me parece muy interesante., porque el conteo se realiza en varias columnas.

    Lo mas interesante me parece el conteo por pais, ya que no te cuentaria un pais que no esté programado dentro del macros. (Ejmeplo: Si coloco Colombia o China no sería contado en el ejercicio)

  3. Con todo respeto, no me gusta el código.

    Según lo programado el formulario se muestra al hacer click en el botón "Ingresar datos", hasta ahí no hay problema, pero el formulario requiere de una acción (presionar un botón) para que se carguen las opciones y ni siquiera es el propio botón el las carga sino que al presionar dicho botón hace click en el otro botón y es éste último el que carga las opciones del formulario. Si suena complicada la descripción es porque está complicada la programación.

    Estas opciones deberían cargarse automáticamente a través del Userform Initialize, de la siguiente manera:

    Private Sub UserForm_Initialize()

    ListBox1.AddItem ("Argentina")
    ListBox1.AddItem ("Brasil")
    ListBox1.AddItem ("Chile")
    ListBox1.AddItem ("Perú")
    ListBox1.AddItem ("EE.UU.")

    ListBox2.AddItem ("Lift Attendant")
    ListBox2.AddItem ("Cashier")
    ListBox2.AddItem ("Cook Assistant")
    ListBox2.AddItem ("Facility")
    ListBox2.AddItem ("Rental")
    ListBox2.AddItem ("Dish Washer")

    TextBox1.Text = ""
    TextBox2.Text = ""

    End Sub

    Luego ya no se requiere del botón "Activar"

    Por otro lado, al formulario le falta un botón "Cancelar" o "Cerrar" que permita que si me desanimo de ingresar algo pueda terminar la acción y salir del formulario. Algo así:

    Private Sub CommandButton3_Click()
    End
    End Sub

    Por otro lado, la observación de Junior en la que dice que borra los datos pero se mantiene el resultado se debe a que el programa no realiza un borrado previo de las celdas en donde se van a colocar los resultados, es decir que los resultados que se muestran son los que estaban antes de correr la macro. Recomiendo hacer una limpieza previa así:

    Sub Limpiar()
    Worksheets("Resultados").Range("B2:B6").ClearContents
    Worksheets("Resultados").Range("E2:E6").ClearContents
    Worksheets("Resultados").Range("H2:H3").ClearContents
    Worksheets("Resultados").Range("K1").ClearContents
    End Sub

    Una recomendación final, a veces sucede que al ingresar datos y trabajarlos por alguna razón -de esas que nunca faltan- se cierra el archivo y no grabamos. En lo personal siempre añado una sentencia de grabación al finalizar cada acción importante (ActiveWorkbook.Save), esto garantiza que no se trabaje en vano.

    Espero sea de ayuda.

    Saludos,
    Wilbert Ríos

  4. Esta muy interesante la forma de ingresar los datos y de borrar los datos, más para conocer la sumatoria de los resultados se puede utilizar la fórmula "CONTAR.SI".

    En el botón de RESULTADOS, se puede ingresar código para actualizar la fórmula CONTAR.SI cuando se ingresa más datos.

    Ejemplo:

    n = Worksheets("Base de datos").Cells(Rows.Count, 3).End(xlUp).Row

    Worksheets("Resultados").Range("b2").Formula = "=COUNTIF('Base de datos'!c2:c" & n & ",a2)"

    Worksheets("Resultados").Range("b3").Formula = "=COUNTIF('Base de datos'!c2:c" & n & ",a3)"

Deja una respuesta

Los campos requeridos estan marcados con *.