Traducir el blog

Mi Carrera Profesional

🔝To translate this blog post to your language, select it in the top left Google box.


Al poco de aprender a hablar aprendemos:

Mi carrera como ingeniero

Todas estas son listas ordenadas como la que he preparado en mi primera semana de ingeniero autojubilado, para simular una escala de tiempos autodinámica y para recordar en el futuro mi carrera profesional en diversas ramas de la ingeniería:
  1. Ingeniero eléctrico durante mis estudios en la Escuela Técnica Superior de Ingenieros Industriales - ETSIIZ de la Universidad de Zaragoza, siendo licenciado de la 2ª promoción de ingenieros.
  2. Ingeniero electrónico diseñando un prototipo de terminal inteligente, entregado como ejercicio práctico de mi proyecto fin de carrera, y que fue dirigido por el gran profesor de electrónica D. Tomás Pollán Santamaría, q.e.p.d. Nunca te olvidaré MAESTRO.
  3. Ingeniero industrial en varias compañías informáticas y departamentos de I+D.
  4. Ingeniero de automatización programando automátas programables.
  5. Ingeniero de software para diseñar equipos electrónicos basados en microcontrolador.
  6. Ingeniero de telecomunicaciones en el departamento de I+D de Electrónica Aragonesa en colaboración con Telefónica I+D.
  7. Ingeniero de sistemas en los departamentos de I+D de Amper y Siemens.
  8. Ingeniero de calidad en un departamento de I+D.
  9. Ingeniero informático desarrollando aplicaciones cliente-servidor como analista-programador.
  10. Ingeniero TIC como consultor de Tecnologías de la Información y las Comunicaciones.
  11. Ingeniero de pruebas de la calidad del software.
  12. Ingeniero de datos para Indra, Alten, Gas Natural Fenosa, IBM y BBVA.
  13. Ingeniero de inteligencia de negocio (BI - Business Intelligence) con herramientas Power.
  14. Ingeniero multimedia desarrollando en Excel múltiples Interfaces Gráficos de Usuario - IGU (GUI - Graphical User Interface) en mi propio blog. Sí, este que estás leyendo ahora mismo: #ExcelPedroWave
La primera es la única formación reglada en ingeniería que he recibido en mi vida profesional, y de eso hace ya más de 40 años y, curiosamente, es la única ingeniería en la que no tengo experiencia. En las demás ingenierías mi formación ha sido vocacional, ocupacional, continua, permanente y autodidacta, y siempre enfocado en obtener los mejores resultados para mi empresa y para mis clientes, y en cumplir los objetivos SMART: específicos; medibles; alcanzables; relevantes y limitados en el tiempo.

Mi carrera profesional

Con esta publicación trato de recordar mi propia carrera profesional en un gráfico en Excel, ¡cómo no!, que muestre los años, las fechas de inicio y fin y los días de cada hito de mi carrera, durante los últimos 45 años, desglosados y filtrados por campos como: Actividad; Cliente; Empresa; Herramientas; Logros; Lugar; Puesto; Sector y Tareas, como se puede ver en esta imagen animada:



Para crearlo han hecho falta 4 hojas:
  • Hoja 'DAT_CARRERA': Con los datos de la carrera en una tabla que se puede editar para introducir tus propios datos profesionales. Antes hay que desproteger la hoja pues está protegida sin contraseña. Observa que la fecha final de un hito está marcada en color de fondo amarillo, con la función =Hoy() pues es el hito actual que aún no ha acabado, seguir publicando en este blog...

  • Hoja 'TD_CARRERA': Con dos tablas dinámicas, una para los campos de cada hito y otra con los datos de la carrera. Las segmentaciones de datos de la hoja 'INF_CARRERA' están conectadas con estas tablas dinámicas.

  • Hoja 'TAB_CARRERA': Con la tabla filtrada asociada al gráfico de barras de la hoja 'INF_CARRERA', y con datos de formato de año y fechas, y con el año mínimo y máximo a mostrar en el gráfico.

  • Hoja 'INF_CARRERA': Con el gráfico de la carrera y las segmentaciones de datos que pueden ser filtradas individualmente o borrados totalmente sus filtros. Cuando por ejemplo se selecciona en la segmentación principal el campo "Empresa", aparece la segmentación de datos secundaria de la "Empresa", para permitir filtrar por empresa. Todos los filtros que se hagan en una segmentación secundaria se mantienen mientras no se borre el filtro de ese campo determinado. Borrando el filtro de la segmentación principal, se borran todos los filtros de las segmentaciones secundarias y la segmentación de los años de inicio.

Descarga de la plantilla

Descarga la plantilla totalmente gratuita, con las macros visibles y las hojas protegidas sin contraseña, desde Google (con el botón "Excel Download") o desde el enlace a Microsoft OneDrive:

Técnica empleada para la escala de tiempos

Se ha pretendido simular una escala de tiempos autodinámica, para lo que hacen falta unas cuantas macros VBA:
  • Evento Worksheet_SelectionChange en la hoja 'INF_CARRERA' que llama a las macros: ShowHideInitialDate y ShowHideDays, para mostrar u ocultar las fechas y días de cada hito.

  • Evento Worksheet_Change en la hoja 'TD_CARRERA' que llama a las macros: FormatCareerChart y ChangeField, para formater el gráfico y cambiar el campo seleccionado.

  • Evento Worksheet_Change en la hoja 'DAT_CARRERA' que llama a la macro: RefrehPivotTable para refrescar la caché de la tabla dinámica de la hoja 'TD_CARRERA' con los datos de la carrera.

  • Módulo ModCareer con las macros que autodinamizan el gráfico con la carrera y que están suficientemente autoexplicados en los comentarios del código. La función DATE_FORMAT() permite obtener el formato local de las fechas y los años del gráfico.


Agradecimientos

No puedo dejar de agradecer el apoyo y la ayuda que me han ofrecido desinteresadamente todos mis exprofesores y excatedráticos durante 5 años de estudios de ingeniería y todos mis excolegas, excompañeros, excolaboradores, exjefes, exdirectores durante los últimos 40 años de carrera profesional, para conseguir el objetivo de ser un ingeniero autojubilado, con muchas automatizaciones por hacer, muchas rutas que recorrer en autocaravana, como nómada digital, y muchos artículos que escribir en este blog de autoayuda y autoaprendizaje de Excel.

Redes Sociales

Mis vídeos

Puedes seguirme suscribiéndote a mi canal de YouTube, donde puedes ver gratuitamente la lista completa de mis vídeos desde este enlace:

YouTube - Excel Pedro Wave



Cuando el presupuesto para hacer un vídeo es inmenso, sin ninguna duda se pueden crear vídeos de mucha más calidad que los míos, hechos de forma casera en una tableta con Windows 10 y con sólo tres herramientas:

  1. Excel para Microsoft 365: para crear las plantillas de ejemplo.
  2. MS PowerPoint: para crear el contenido del vídeo.
  3. Editor de vídeo de MS Fotos: para montar y grabar el vídeo.

Y si no, que se lo pregunten a Mark Zuckerberg, que en este vídeo presenta su Metaverso en Facebook, hecho con los últimos adelantos tecnológicos:


Mis Foros Excel

Menús segmentados en un tablero de ajedrez

No voy a hablar de los miles de menús que me comí en los restaurantes de la capital de España, durante los 9 años que estuve trabajando en varias oficinas de Madrid.

Voy a hablar de cómo hacer menús interactivos usando la segmentación de datos para filtrar datos de tablas dinámicas (Slicers en inglés), con un ejemplo de un tablero de ajedrez interactivo.

He intentado que los menús sean intuitivos, vistosos, amigables y fáciles de usar y de aprender, según el principio de acción-reacción, y procurando mejorar la interfaz del usuario (User Interface - UI) y la experiencia del usuario (User eXperience - UX). Aunque no he programado la posiblidad de deshacer ninguna de las acciones con los menús, siempre se puede obtener cualquier posición de las piezas de ajedrez en el tablero o incluso borrarlas todas y comenzar de nuevo.

En esta entrada del blog aprenderemos a:
  1. Mantener dos tablas dinámicas: una con un único filtro para el menú y otra con un filtro para los submenús.
  2. Mantener dos tablas normales: una para el menú y otra para los submenús.
  3. Mantener una tabla auxiliar para los submenús con su posición, número de filas y de columnas.
  4. Modificar la segmentación de datos del menú.
  5. Modificar la segmentación de datos de los submenús.
  6. Analizar las macros de Excel, en lenguaje VBA, que interactúan con los menús y submenús.
  7. Representar un tablero de ajedrez interactivo dentro de un rango de celdas de una hoja de cálculo.
Esta es la apariencia que tiene el menú principal y los diferente subménus gráficos, con un ejemplo de cómo animar un tablero de ajedrez en Excel.


En esta imagen gif animada se muestra un menú principal, numerado del 1 al 7, diseñado con una segmentación de datos. Los 7 submenús están diseñados con una única segmentación de datos con un formato de filas y columnas diferente para cada uno de los submenús. Los submenús se despliegan a la altura de su correspondiente entrada desde el menú principal. Algunos submenús son de texto y otros son gráficos, como las piezas del ajedrez o sus posibles movimientos en vertical, horizontal o diagonal.

Descarga de la plantilla

Descarga la plantilla totalmente gratuita, con las macros visibles y las hojas protegidas sin contraseña, desde Google (con el botón "Excel Download") o desde el enlace a Microsoft OneDrive:

Tablas normales para el menú y los submenús

Para crear los menús hace falta una hoja auxiliar 'TD_Menu' en la que se han insertado 3 tablas normales, un rango para los submenús y una celda auxiliar:
  1. TablaMenu: Para el menú principal en el rango E4:E11 con la lista de submenús numerados.
  2. TablaSubmenus: Para los submenús en el rango H14:N16 con una columna por cada submenú, con los valores posibles de cada submenú.
  3. TablaSubmenu: Tabla auxiliar con los valores del submenú seleccionado en el menú principal.
  4. Rango de parametrización de cada submenú: Rango F26:N29 con el tope, filas y columnas de la segmentación de datos que sirven para personalizar cada submenú.
  5. Celda auxiliar: En la celda E2 se calcula el número de submenú elegido en el menú principal.
La tabla para el menú principal se puede personalizar para cambiarlo según las necesidades del usuario final. En este ejemplo, con traducción simultánea a varios idiomas, los valores del menú principal se encuentran en la hoja 'Idiomas', desde donde se deben cambiar:


En la columna de la izquierda se muestra la tabla con el submenú elegido y las demás columnas son de la tabla de submenús, que se pueden personalizar para formar otro tipo de submenús. Hay que tener en cuenta que, para la traducción a varios idiomas, los valores del submenú 4 (Iniciar; Borrar) y del submenú 7 (SI; NO) están en la tabla de la hoja 'Idiomas':

En esta imagen se muestra el rango de parametrización de la segmentación de datos de cada submenú. Hay que prestar atención que en la fila de "Columnas" el valor del número de columnas del submenú 6 es fijo:

Tablas dinámicas para el menú y los submenús

En la hoja auxiliar 'TD_Menu' se han insertado dos tablas dinámicas:
  1. TD_Menu: Para el menú principal en el rango B4:C4 con origen de datos en la TablaMenu y sólo con un filtro para el campo "Menu".
  2. TD_Submenu: Para el submenú en el rango B14:C14 con origen de datos en la TablaSubmenu y sólo con un filtro para el campo "Submenu".

Segmentación de datos del menú principal

La segmentación de datos del menú principal está conectada con la tabla dinámica TD_Menu y está en la hoja 'Tablero'.

La configuración de la segmentación de datos es la siguiente:
  • Mostrar encabezado en estado sin chequear.
  • Se ha creado un nuevo estilo de segmentación de datos sin bordes.

Segmentación de datos de los submenús

La segmentación de datos de los submenús está conectada con la tabla dinámica TD_Submenu y está en la hoja 'Tablero'.

Se basa en la misma configuración de la segmentación de datos del menú principal, sin mostrar encabezado ni bordes.

La principal ventaja de está técnica para diseñar menús y submenús es que la misma segmentación de datos de submenús sirve para mostrar cada uno de los submenús, simplemente variando su posición, su número de filas y columnas y los valores del submenú seleccionado con el menú principal, gracias a las tablas de la hoja 'TD_Menu' que ya he descrito más arriba.

Con una única segmentación de datos se configuran varios submenús, por ejemplo:

Se puede observar que algunos de ellos están formados por caracteres gráficos, como las piezas de ajedrez o las flechas de movimiento. Para ordenar las flechas de movimiento ha hecho falta definir, en las opciones avanzadas de Excel, una nueva lista personalizada:


Lo importante es que los submenús cambian dinámicamente cuando se cambia la selección del submenú desde el menú principal y se coloca a la altura del submenú elegido. Lo mejor es verlo en el siguiente vídeo en acción : 


Al seleccionar en el menú principal la opción "1. Fuente" aparece el submenú con la lista de las dos fuentes programadas:
  • Segoe UI Symbol
  • Times New Roman
Las figuras de las piezas del ajedrez creo que se llaman trebejos. De la hoja 'Ajedrez' se obtiene la posición inicial de las piezas en una partida de ajedrez y ejemplos de las dos fuentes que pintan las piezas:


Macros del menú y los submenús

Cuando se selecciona un menú o un submenú se ejecutan las macros Excel, escritas en lenguaje VBA, que permiten la interacción con el tablero de ajedrez del ejemplo propuesto.

Para explicar e interpretar las macros de esta aplicación es preciso conocer los nombres definidos que son los que aparecen en el menú:
Fórmulas --> Administrador de nombres 


Nombres definidos más relevantes:
  • Rango_TD_Submenu: Es el origen de datos de la tabla dinámica TD_Submenu, creado mediante las funciones INDICE() y CONTAR.SI(), esta última con el argumento "?*" con comodines para contar solamente las filas con datos.
  • Rango_Tabla_Submenu: Con el rango completo de la tabla "TablaSubmenu", que se usa en el nombre definido anteriormente: Rango_TD_Submenu
  • El resto de nombres definidos son rangos o celdas para que sea más clara y fácil su referencia en las fórmulas y macros.

Módulos de la aplicación

  • Hoja 'Tablero': Se produce el evento SelectionChange cuando cambia la celda seleccionada de la hoja y que representa un escaque del tablero de ajedrez. Se ejecuta la macro GetSubmenu únicamente cuando se ha seleccionado en el menú principal el submenú 2 con las piezas.

  • Hoja 'TD_Menu': Se produce el evento Change cuando cambia el valor de la celda. Si cambia el valor del filtro de la tabla dinámica TD_Menu se ejecuta la macro ChangeSubmenu. Si cambia el valor del filtro de la tabla dinámica TD_Submenu se ejecuta la macro ActionSubmenu.

  • Hoja 'ThisWorkbook': Los eventos Open; BeforeSave y BeforeClose lanzan la macro para proteger las hojas ProtectSheets. Además el evento Open oculta todos los menús y barras de Excel llamando a la macro VisibleExcel.

  • Módulo modChangeMenu: Contiene las macros necesarias para interactuar con el menú principal y con los submenús:

    • ChangeSubmenu: Realiza las acciones que permiten el cambio de un submenú desde el menú principal.
    • GetSubmenu: Obtiene el último valor del submenú seleccionado, por lo que hay que modificar el número de casos si se cambian los submenús.
    • ActionSubmenu: Ejecuta las acciones de un determinado submenú, por lo que hay que modificar el número de casos si se cambian los submenús.
    • Select2Slicer: Llama 2 veces a la macro SelectSlicerItem, pues devuelve un error la primera vez. A tener en cuenta para una mejora.
    • SelectSlicerItem: Selecciona un único valor de la segmentación de datos.
    • TopMenu: Obtiene el tope de la posición de la segmentación de datos del menú principal.
    • RowHeightMenu: Obtiene el alto de la fila de la segmentación de datos del menú principal.
    • SelectFirstValuePivotTable: Cuando se seleccionan múltiples valores en una segmentación de datos, obtiene solamente el primer valor.
    • RefreshAll: Refresca la caché de las 2 tablas dinámicas y las fórmulas de todo el libro de trabajo.
  • Módulo modChangeChessboard: Contiene las macros necesarias para interactuar con el tablero de ajedrez:

    • ChangeChessboard: Borra todas las piezas del tablero o inicializa el tablero con la posición inicial de las piezas en una partida de ajedrez.
    • IniChessboard: inicializa el tablero con la posición inicial de las piezas en una partida de ajedrez.
    • DeleteChessboard: Borra todas las piezas del tablero.
    • ChangeFont: Cambia la fuente de caracteres de las piezas de ajedrez.
    • ChangePiece: Cambia la pieza de ajedrez en una de las celdas que representa un escaque.
    • MovePiece: Mueve una pieza de ajedrez a otro escaque del tablero.
  • Módulo modChangeProtect: Macros para proteger las hojas:

    • ProtectSheets: Protege las hojas sin contraseña.
    • UnprotectSheets: Desprotege las hojas.
    • ProtectOneSheet: Protege una hoja de los usuarios pero no de las macros, gracias al argumento: UserInterfaceOnly:=True
    • UnprotectOneSheet: Desprotege una hoja.
  • Módulo modHideExcel: Macros para ocultar o mostrar los menús y barras propias de Excel. Se puede ocultar todo excepto el título de la aplicacion. Como este módulo es un extra de ejemplo, no voy a explicar cada una de las macros. Quien tenga ganas de estudiarlas que las analice ya que son muy claras y simples, como dice el conocido bloguero Robert Mundigl en su blog Clearly and Simply, del que tanto estoy aprendiendo y que recomiendo desde estas líneas. Si has llegado a leer hasta aquí, lo que si recomiendo es optar por no ocultar Excel desde el menú, ya que quitar la ocultación manualmente es un trabajo arduo.

Más juegos de ajedrez en este blog

Desde que uso Excel me gusta escribir publicaciones en el blog sobre ajedrez, aquí tienes unos cuantos ejemplos que espero que te gusten y que hagas comentarios sobre ellos en alguna de las entradas del blog:

Posdata:

Cuando escriba el próximo artículo ya estaré felizmente jubilado y mi idea es construir próximamente un tablero con la historia de los 40 años de mi carrera profesional (enlace aquí), en un storyboard dinámico como el que aparece en el siguiente enlace, pero con otra técnica: A practical Example for Dynamic Storyboards

Si detectas alguna traducción incorrecta al cambiar de idioma, dímelo en un comentario o modifica tú mismo la tabla con los idiomas, a partir de la columna C de la hoja 'Idiomas', donde puedes añadir más columnas si quieres más idiomas...

Mi lista de blogs