🔝To translate this blog post to your language, select it in the top left
Google box.
DEDICATORIA:
Dedico este y los próximos artículos a mi amigo Fernando, el mejor programador que he conocido en
mi vida profesional, con quien he compartido muchas sobremesas y que, recién jubilado, se mudó
a vivir a
Pareja(pueblo de Guadalajara), escapando de
los madriles.
Cambios en el Mapamundi con relojes
Para no perderte en el laberinto de los cambios de horario de invierno y de
verano, lee estas páginas:
O mejor aún,
descarga la nueva versión del Mapamundi con relojes en Excel, que he
diseñado a partir de las versiones anteriores que publiqué en mi blog:
La nueva versión tiene este aspecto y permite saber la hora en cualquier
ciudad del mundo:
¡La nueva versión del Mapamundi con relojes la he diseñado con la
inestimable ayuda de
Microsoft Copilot!, una IA generativa que permite la Programación Asistida (Vibe coding), de la que hablaré más adelante.
Descarga el mapamundi con relojes
Descarga la última versión del Mapamundi con relojes, en continua
evolución, desde este enlace:
Las macros del archivo descargado están bloqueadas por defecto. Para
desbloquear las macros debes modificar las Propiedades del archivo
siguiendo estas instrucciones:
Abre el archivo y presiona el botón: Habilitar edición cuando
aparezca el aviso de VISTA PROTEGIDA.
Presiona el botón: Habilitar contenido cuando aparezca la ADVERTENCIA
DE SEGURIDAD Las macros se han deshabilitado o se deshabilitó parte del
contenido activo.
Las macros no están protegidas para poder analizar fácilmente el código VBA.
Las hojas están protegidas sin contraseña, para poder analizarlas y para
evitar que los usuarios alteren las fórmulas.
ATENCIÓN:
Se puede modificar este libro de Excel respetando esta licencia:
En este vídeo explico cómo usar el Mapamundi con relojes.
Te agradecería que me comentaras cualquier sugerencia de mejora o los
errores que deban corregirse en una próxima versión.
Programación en Pareja
Mi carrera profesional acabó en 2020 (año de la pandemia) sin haber
usado la
Inteligencia Artificial - IA, pues el uso generalizado de la IA comenzó en el año 2022, coincidiendo
con la aparición y expansión de los modelos de IA generativa como
ChatGPT.
Lo que si conocí fue la
Programación en Pareja o Programación por Pares
(Pair Programming), que es una técnica de desarrollo ágil,
especialmente con la
Programación Extrema(Extreme Programming - XP), donde
dos desarrolladores trabajan juntos en el mismo código al mismo tiempo, compartiendo pantalla, teclado y ratón. Uno escribe y el otro revisa, y
ambos intercambian roles con frecuencia. Esto mejora la calidad del código,
acelera el aprendizaje y reduce errores.
La Programación en Pareja o Programación por Pares se denomina así
porque siempre hay dos programadores, que intercambian sus roles
regularmente:
Conductor/Piloto: es el que escribe el código.
Navegador/Copiloto: es el que revisa el código, detecta errores,
propone mejoras y piensa en el diseño general.
Siempre he creído que este tipo de programación es el mejor para generar
código, aunque pocas veces la he practicado, pues hacen falta dos
programadores para generar un único código, y los gestores de proyectos aún
piensan que cada programador haga su tarea y se responsabilice de ella, sin
contar con una pareja de programadores, cuando es más rápido y eficaz que
dos programadores codifiquen juntos aprendiendo el uno del otro.
Con el teletrabajo se creó la variante de Programación Remota en Pareja(Remote Pair Programming), donde ambos desarrolladores trabajan desde
lugares separados usando herramientas de colaboración remota en tiempo real.
Yo no la he probado, pues suelo programar habitualmente solo...
¡Hasta hace poco!
Programación Asistida
Este es el primer artículo sobre Programación Asistida por IA, que me
ha servido para diseñar la última versión del
Mapamundi con relojes en Excel, y para compartir mis experiencias de
programación con los lectores de mi blog.
Los títulos de cada uno de los artículos de esta serie comenzarán con
PA y un número de artículo, para indicar que se refieren a la
Programación Asistida (PA).
La
Programación Asistida por IA
(Vibe coding)
permite a programadores solitarios desarrollar software que antes requería
un equipo de ingeniería.
"La nueva relación entre los programadores y la inteligencia artificial
será de colaboración, en la que las herramientas automatizadas
incrementarán la productividad y la eficiencia, mientras que el
conocimiento y la experiencia humana seguirán siendo esenciales para
incrementar la
calidad del software."
¿Cómo he programado el nuevo Mapamundi con relojes?
Con la inestimable ayuda de
Microsoft Copilot, una IA que permite codificar mediante Programación Asistida.
Gracias a MS Copilot he podido encontrar bugs, mejorar y comentar el código
VBA de la última versión del Mapamundi con relojes, que puedes
descargar más arriba y que está en continua evolución, pues no me resisto a
seguir consultando a la IA, que está activa 24x7 y deseando ayudarme.
De momento, quédate con esta comparativa:
En los próximos artículos de esta serie sobre Programación Asistida,
os contaré cómo la IA me ha ayudado y sigue ayudándome a realizar cambios en
el código VBA e incluso en las hojas de Excel.
🔝To translate this blog post to your language, select it in the top left
Google box.
Cómo aprender a usar relojes de 24 horas
He visto que quienes vienen de países con relojes que marcan la hora en
formato de 12 horas con AM/PM tienen dificultad para aprender a usar relojes
de 24 horas.
En países como Colombia se dice: la una de la tarde en lugar de las 13
horas, pues no están acostumbrados a relojes de 24 horas.
Con estos dos relojes se aprende a distinguir el formato de 12 horas
AM/PM del formato de 24 horas.
El reloj de la izquierda marca la una y 18 minutos en formato PM (después
del mediodía).
El reloj de la derecha marca las 13:18 horas en formato de 24 horas.
TRUCO:
Para convertir cualquier hora PM en 24 horas, se suman 12 horas. Por
ejemplo, 01:18 PM se convierte en 13:18 horas. Si es 01:18 AM no se suma
nada, por lo que es 01:18 horas.
Vídeo para saber la hora
En este vídeo de unos dos minutos explico cómo saber la hora en los relojes
de 12 horas y de 24 horas.
Pruébalo ahora mismo en tu teléfono
Prueba en tu teléfono estos dos relojes analógicos, de 24 horas y de 12
horas con AM/PM, desde esta ventana en la nube de Microsoft OneDrive:
ATENCIÓN:
Para hacer zoom, coloca dos dedos sobre la pantalla del teléfono y muévelos,
igual que cuando amplías o reduces una foto.
En la barra de abajo hay varios iconos:
Botón para actualizar los relojes:
Actualizar todas las conexiones de datos
Botón para descargar el archivo: Descargar
Botón para: Información acerca de este libro. Aparece un
Código para insertar que no funciona desde hace meses. Está
denunciado a Microsoft, pero no da solución.
Ayúdame a compartir los relojes, insertando el siguiente código en tu
blog o página web:
Pruébalo ahora mismo en tu PC
Prueba en tu PC estos dos relojes analógicos, de 24 horas y de 12 horas con
AM/PM, sin necesidad de descargar nada, incluso sin tener instalado Excel,
desde esta ventana en la nube de Microsoft OneDrive:
Para ajustar el zoom en la nube:
En el PC sitúa el cursor dentro del buscador y presiona la tecla
<Control> girando la ruleta del ratón.
Descarga el archivo haciendo clic en el botón: Descargar
Si quieres ayudarme puedes compartir el nuevo reloj analógico,
insertándolo en tu blog o página web con este código:
ATENCIÓN:
Se puede modificar este libro de Excel respetando esta licencia:
🔝To translate this blog post to your language, select it in the top left
Google box.
Un reloj analógico en tiempo real
En el artículo anterior publiqué un reloj analógico que mostraba manualmente
la hora actual, presionando la tecla para calcular el libro, ya que no era
automático por no contener macros:
Tenía la ventaja de poder usarlo en Excel para la Web y de insertarlo en el
blog, por si alguien quería probarlo sin tener instalado Excel.
Ahora publico un reloj analógico en tiempo real, que automáticamente
mueve la aguja de los segundos cada segundo, gracias a las macros VBA.
NOTA: Haga clic en el reloj
analógico para iniciar o detener el temporizador de un segundo.
ACTUALIZACIÓN v1.12:
Descarga la última actualización para elegir el tipo de reloj con un desplegable en la celda D6:
12 Horas: De 1 a 12 horas.
24 Horas: De 12 a 23 horas si la hora es después del mediodía.
Si es antes del mediodía se comporta como el reloj de 12 Horas.
AM/PM: De 1 a 12 horas, indicando AM o PM si la hora es antes
o después del mediodía, respectivamente.
Con la última actualización el tipo de reloj que se muestra ya no está
determinado por la configuración regional del sistema operativo, sino que
depende de la elección del usuario.
También he añadido eventos de la hoja para cambiar automáticamente el valor
del tipo de reloj en la celda D6 cuando el usuario cambia el idioma del
reloj.
Además he añadido un
microbenchmark, que escribe en la
ventana Inmediato del editor VBA (denominada también ventana Ejecución) cuando el reloj se salta algún
segundo, debido a que el recálculo tarda más de un segundo, o a que Excel o
el sistema están ocupados en otras tareas y no responden en un segundo.
Descarga el reloj analógico en tiempo real
Descarga el reloj analógico en tiempo real v1.12 desde este
enlace:
Las macros del archivo descargado están bloqueadas por defecto. Para
desbloquear las macros debes modificar las Propiedades del archivo
siguiendo estas instrucciones:
Abre el archivo y presiona el botón: Habilitar edición cuando
aparezca el aviso de VISTA PROTEGIDA.
Presiona el botón: Habilitar contenido cuando aparezca la ADVERTENCIA
DE SEGURIDAD Las macros se han deshabilitado o se deshabilitó parte del
contenido activo.
Las macros no están protegidas para poder analizar fácilmente el código VBA.
Las hojas están protegidas sin contraseña, para poder analizarlas y para
evitar que los usuarios alteren las fórmulas.
ATENCIÓN:
Se puede modificar este libro de Excel respetando esta licencia:
Características del reloj analógico en tiempo real
ACTUALIZACIÓN v1.12:
He ajustado el comportamiento del módulo con la ayuda de la IA de Microsoft,
llevando a cabo pruebas y corrección de errores en 12 iteraciones del
desarrollo del código del módulo VBA.
¡Realmente me lo he pasado "pipa" interactuando con la IA de Microsoft
Copilot, intentando resolver los intríngulis del código!
Este es el resultado de la última revisión del módulo:
A continuación explicaré cuáles son las principales características del
reloj analógico en tiempo real.
⭐ Módulo del temporizador API
Este módulo implementa un temporizador de alta precisión en
Excel usando las funciones de Windows SetTimer y
KillTimer.
Está diseñado para funcionar en 32 y 64 bits, sincronizarse
exactamente con el reloj del sistema y actualizar el rango nombrado
"miHora" cada segundo sin bloquear Excel.
🧩 1. Compatibilidad total 32/64 bits
Incluye declaraciones API con #If VBA7 Then para:
SetTimer
KillTimer
Esto garantiza compatibilidad con:
Excel 2010 (32/64 bits)
Excel 2013 → Excel para Microsoft 365
Windows 7 → Windows 11
⏱️ 2. Temporizador real basado en Windows (no OnTime)
A diferencia de Application.OnTime, este temporizador:
El primer tick ocurre justo al inicio del siguiente segundo.
🧱 5. Protección contra errores (incluido el 50290)
El procedimiento Tick incluye:
On Error GoTo SalirTick
Esto evita que:
Excel detenga el temporizador si está ocupado
Se produzcan errores al cerrar libros
El temporizador quede “colgado”
🖱️ 6. Cursor dinámico de reloj
Al iniciar:
Application.Cursor = xlWait
Al detener:
Application.Cursor = xlDefault
Esto da feedback visual claro al usuario.
🛑 7. Inicio/parada conmutado
El módulo incluye un interruptor:
Sub IniciarDetenerReloj()
que alterna entre:
IniciarReloj
DetenerReloj
Ideal para botones o accesos rápidos.
🧹 8. Limpieza segura del temporizador
Al detener:
KillTimer 0, TimerID
Esto garantiza:
No quedan temporizadores huérfanos
No se ejecutan ticks después de cerrar el libro
No se producen cierres inesperados de Excel
📌 9. No bloquea Excel
El temporizador API:
No usa bucles
No usa DoEvents
No congela la interfaz
Permite trabajar en otros libros sin interferencias
🎁 Resumen del Temporizador API
Temporizador API de alta precisión para Excel, compatible
con 32/64 bits, sincronizado al segundo del sistema, con actualización
inteligente, cursor dinámico, protección contra errores y control seguro
de inicio/parada. No bloquea Excel y mantiene estabilidad incluso con
múltiples libros abiertos.
Explicación técnica del módulo ModTempo
A continuación explico técnicamente el módulo
ModTempo, desarrollado con la ayuda de la IA.
La estructura sigue el flujo real del código y explica
qué hace, por qué lo hace, y
cómo interactúan entre sí las partes críticas: API Win32,
temporizador, corrección de (drift correction), modo híbrido y escritura
inteligente.
⭐ Módulo Temporizador
ModTempo implementa un
reloj de alta precisión dentro de Excel usando:
Temporizador API de Windows (SetTimer)
Corrección de deriva (drift correction)
Modo híbrido:
Actualiza la celda solo si Excel está activo y visible
Ahorra CPU cuando Excel está en segundo plano
Milisegundos reales mediante Now()
Escritura inteligente: solo escribe si el valor cambia
Sin interferir con cálculos ni edición
El resultado es un reloj estable, eficiente y preciso,
superior a cualquier implementación basada en
Application.OnTime.
🧩 Declaraciones API
El módulo declara cuatro funciones de la API de Windows:
1) SetTimer
Crea un temporizador que ejecuta un procedimiento (callback) cada X
milisegundos.
hWnd = 0 → temporizador asociado al proceso, no a una ventana
nIDEvent = 0 → Windows asigna un ID automáticamente
uElapse → intervalo en milisegundos
lpTimerFunc → dirección del procedimiento Tick
Devuelve un ID de temporizador, que se guarda en
RelojTimerID.
2) KillTimer
Detiene el temporizador usando su ID.
3) IsWindowVisible
Comprueba si la ventana de Excel está visible (no minimizada).
4) GetForegroundWindow
Devuelve el handle de la ventana que tiene el foco.
🧩 Variables locales
Private RelojCorriendo As Boolean
Private RelojTimerID As LongPtr
Private TickUltimo As Double
Private contadorTicks As Long
Private contadorSaltos As Long
RelojCorriendo: estado ON/OFF del reloj.
RelojTimerID: ID del temporizador API (obligatorio
LongPtr en 64 bits).
TickUltimo: marca de tiempo del último tick para medir
drift.
contadorTicks: contador de ticks del reloj.
contadorSaltos: contador de saltos del microbenchmark.
Son Private porque solo deben ser accesibles dentro del
módulo.
🧩 IniciarDetenerReloj
Alterna el estado del reloj:
Si estaba apagado → lo inicia
Si estaba encendido → lo detiene
Es un interruptor simple para el usuario.
🧩 IniciarReloj
Este procedimiento:
1) Cambia el cursor a reloj de arena
Application.Cursor = xlWait
Indica visualmente que el reloj está en marcha.
2) Marca el reloj como activo
RelojCorriendo = True
3) Guarda el tiempo actual
TickUltimo = Timer
4) Sincroniza el primer tick con el
siguiente segundo exacto
msRestantes = 1000 - (CLng(Timer * 1000) Mod 1000)
If msRestantes = 1000 Then msRestantes = 0
Esto garantiza que el reloj
empiece exactamente en 0 milisegundos, no en un punto
arbitrario.
Mide la deriva (drift calculation) y corrige si es necesario
Lee la hora en milisegundos
Escribe solo si cambia el valor
Con microbenchmark que registra saltos de segundos
El módulo ModTempo consigue:
Sincronización exacta con el segundo real
Milisegundos reales en cada actualización
Corrección automática de deriva (drift correction)
Ahorro de energía cuando Excel está en segundo plano
Cero parpadeos
Cero interferencias con cálculos
Cero repintados innecesarios
Compatibilidad total con 32 y 64 bits
Es un reloj de precisión profesional dentro de Excel:
Preciso
Eficiente
Estable
Sin jitter
Sin parpadeos
Sin interferir con Excel
🧩DIAGRAMA DE FLUJO—ModTempo
┌──────────────────────────┐
│ IniciarDetenerReloj() │
└──────────────┬───────────┘
│
¿RelojCorriendo = False? ────┤
│Sí
▼
┌────────────────────┐
│ IniciarReloj() │
└───────┬────────────┘
│
▼
┌──────────────────────────────┐
│ Cursor = xlWait │
│ RelojCorriendo = True │
│ TickUltimo = Timer │
└───────────┬──────────────────┘
│
▼
┌────────────────────────────────────────┐
│ Calcular msRestantes hasta el próximo │
│ segundo exacto │
└───────────────┬────────────────────────┘
│
▼
┌────────────────────────────────────────┐
│ SetTimer( intervalo = msRestantes ) │
│ → llama a Tick() │
└────────────────────────────────────────┘
──────────────────────────────────────────────────────────────────────────────
TICK() — Cada disparo del temporizador
──────────────────────────────────────────────────────────────────────────────
┌────────────────────────────────────────┐
│ Tick() │
└───────────┬────────────────────────────┘
│
¿Error si Excel ocupado? ─────┤
│No
▼
┌────────────────────────────────────────┐
│ Continua si Excel no está calculando, │
│ si está activo y si la hoja es visible │
└───────────┬────────────────────────────┘
│Sí
▼
┌────────────────────────────────────────┐
│ Mide la deriva del temporizador │
│ KillTimer (primer timer) │
│ SetTimer( intervalo = 1000 ms ) │
│ (sincronizado al segundo exacto) │
└───────────┬────────────────────────────┘
│
▼
┌────────────────────────────────────────┐
│ Lee día y hora: vHora = Now() │
└───────────┬────────────────────────────┘
│
¿Cambió la hora? ─────┤
│Sí
▼
┌────────────────────────────────────────┐
│ ¿Excel está listo? │
└───────────┬────────────────────────────┘
│Sí
▼
┌────────────────────────────────────────┐
│ Deshabilita eventos y refresco pantalla│
│ Range("miHora") = vHora │
│ Habilita eventos y refresco pantalla │
└────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────┐
│ Fin Tick() │
└────────────────────────────────────────┘
──────────────────────────────────────────────────────────────────────────────
STOP — Detener temporizador
──────────────────────────────────────────────────────────────────────────────
┌──────────────────────────┐
│ DetenerReloj() │
└──────────────┬───────────┘
│
▼
┌──────────────────────────┐
│ RelojCorriendo = False │
│ KillTimer TimerID │
│ Cursor = xlDefault │
└──────────────────────────┘
🎯 Qué representa este diagrama
El flujo desde que el usuario inicia el temporizador hasta que lo detiene.
La sincronización exacta al segundo del sistema.
El comportamiento del primer tick (sincronización) y los siguientes
(intervalo fijo).
La actualización inteligente de miHora.
La gestión del cursor de reloj.
La detención limpia del temporizador API.
Explicación técnica de los eventos del reloj
⭐ Eventos en ThisWorkbook
Este módulo conecta el ciclo de vida del libro con el
temporizador API, de modo que el temporizador:
se inicia automáticamente cuando se abre el libro
se detiene automáticamente cuando el libro intenta
cerrarse
Así se evita que el temporizador quede activo en memoria o siga ejecutándose
después de cerrar el archivo.
🧩 Comportamiento detallado
✔ Al abrir el libro
Private Sub Workbook_Open()
IniciarReloj
End Sub
Cuando el archivo se abre:
Se ejecuta IniciarReloj
Se activa el temporizador API
Se inicia la sincronización al segundo exacto
Se cambia el cursor a modo reloj (xlWait)
Comienza la actualización periódica (Tick)
Resultado: el temporizador arranca automáticamente sin
intervención del usuario.
✔ Al intentar cerrar el libro
Private Sub Workbook_BeforeClose(Cancel As Boolean)
DetenerReloj
End Sub
Cuando el usuario pulsa:
La X
Alt+F4
Ctrl+W
O cierra desde menú
Excel ejecuta Workbook_BeforeClose, que:
Llama a DetenerReloj
Mata el temporizador con KillTimer
Restaura el cursor (xlDefault)
Limpia el estado interno
Resultado: el temporizador se detiene siempre antes de que
el libro se cierre, evitando temporizadores huérfanos o errores 50290.
🎯 Resumen de los eventos del reloj
Este código garantiza que el temporizador API se inicia automáticamente
al abrir el libro y se detiene de forma segura al cerrarlo, evitando que
quede activo en segundo plano.
⭐ Diagrama de flujo — Eventos del reloj
┌────────────────────────────┐
│ El usuario abre el libro │
└───────────────┬────────────┘
│
▼
┌──────────────────────────┐
│ Workbook_Open() │
└─────────────┬────────────┘
│
▼
┌──────────────────────────┐
│ IniciarReloj │
│ • Inicia temporizador │
│ • Activa cursor reloj │
│ • Sincroniza primer tick │
└─────────────┬────────────┘
│
▼
┌──────────────────────────┐
│ Temporizador en marcha │
│ (Tick cada segundo) │
└─────────────┬────────────┘
│
▼
┌────────────────────────────┐
│ El usuario intenta cerrar │
│ (X, Alt+F4, Ctrl+W, menú) │
└───────────────┬────────────┘
│
▼
┌──────────────────────────┐
│ Workbook_BeforeClose() │
└─────────────┬────────────┘
│
▼
┌──────────────────────────┐
│ DetenerReloj │
│ • Mata el timer API │
│ • Restaura cursor normal │
│ • Limpia estado interno │
└─────────────┬────────────┘
│
▼
┌──────────────────────────┐
│ El libro se cierra sin │
│ temporizadores activos │
└──────────────────────────┘
🎯 Qué expresa este diagrama
El temporizador se inicia automáticamente al abrir el
libro.
El temporizador se detiene siempre antes de que el libro
se cierre.
Se evita que queden temporizadores huérfanos en memoria.
Se garantiza que Excel no siga ejecutando Tick después del
cierre.
El flujo es limpio, seguro y totalmente automático.
Administrador de nombres
Estos son los nombres definidos en el Administrador de nombres, necesarios
para diseñar el Reloj analógico en tiempo real.
Reloj analógico traducido a 6 idiomas
Selecciona tu idioma para disfrutar de una Excel-ente experiencia.
En la siguiente imagen animada se ve un reloj analógico del tipo AM/PM, con
el formato regional en inglés, y otro del tipo 24 horas en español.
Videotutorial explicando las macros del reloj analógico
En este vídeo he intentado explicar los intríngulis del reloj analógico.
En el vídeo no he mencionado la colaboración con la IA de Microsoft Copilot,
sin la cual no habría podido afinar tanto el código para lograr este
resultado, aunque en los siguientes enlaces no he incluido el diálogo que
mantuve con la IA durante muchas iteraciones, sino solo el resultado final:
🔝To translate this blog post to your language, select it in the top left
Google box.
Características del nuevo reloj analógico
Con mi nuevo reloj analógico puedo ver la hora actual o cualquier
otra hora que yo quiera...
Características principales:
1) Diseñado para funcionar en versiones desde Excel 2010 hasta Excel para
Microsoft 365.
2) Diseñado para funcionar en Excel para la Web o insertado en mi propio
blog.
3) Muestra la hora actual o una hora introducida manualmente.
4) Muestra el formato de 12 horas o de 24 horas.
5) Muestra el formato con 60 minutos.
6) Muestra u oculta la aguja de los segundos.
7) Posición correcta segundo a segundo de las agujas de las horas, minutos
y segundos.
8) Escrito en 6 idiomas y ampliable fácilmente a más idiomas.
¿Te gusta el aspecto de mi nuevo reloj analógico?
Cada vez que pulses la tecla <F9> se actualiza la hora actual.
Edita el rango de celdas E4:G4 con la hora manual: Hora, minutos y
segundos.
La casilla de la celda D3 controla que se vea la hora actual o la hora
manual.
La casilla de la celda D6 controla que se vean 12 o 24 horas.
La casilla de la celda E6 controla que se vean las horas.
La casilla de la celda F6 controla que se vean 60 minutos. Es prioritario
sobre las horas.
La casilla de la celda G6 controla si se verá la aguja de los segundos.
En el rango F9:G9 se puede modificar el centro del reloj.
Las celdas E12, E15, E18 y E21 son los tamaños de las agujas del reloj de
la hora, minuto y segundo respectivamente, estando dividida en dos partes
la aguja de los segundos.
Aunque en la imagen animada no se vea, en la celda G23 se elige el idioma
de los textos del reloj: Español; English; Française; Italiano; Deutsch;
Português.
Prueba el nuevo reloj analógico
Prueba el reloj analógico sin necesidad de descargar nada, incluso sin tener
Excel instalado, desde esta ventana en la nube de Microsoft OneDrive:
Para ajustar el zoom en la nube:
En el móvil o celular usa dos dedos en la pantalla, como haces para
ampliar o reducir una foto.
En el PC sitúa el cursor dentro del buscador y presiona la tecla
<Control> girando la ruleta del ratón.
Descarga el archivo haciendo clic en el botón: Descargar
Si quieres compartir el nuevo reloj analógico, aquí tienes el código para
insertarla en tu blog o página web:
Descarga el nuevo reloj analógico
Descarga el nuevo reloj analógico desde este enlace:
Hace unos días
Andrew Moss,
mi favorito aficionado en Excel,
escribía en las redes sociales sobre la creación de relojes analógicos en
diferentes versiones de ChatGPT:
El año pasado ChatGPT siempre devolvía las 10:10 horas al pedirle otra hora.
Este mes la última versión de ChatGPT consigue que el reloj marque las 12:30
horas pedidas, pero la aguja de las horas está en las 12 cuando debería
estar entre las 12 y la 1 horas:
Hice la prueba con Microsoft Copilot y me devolvió una versión Frankenstein
del reloj, marcando las 10:10 y las 12:30 horas simultáneamente:
Como ninguna Inteligencia Artificial (IA) está lo suficientemente
capacitada, de momento, para generar un reloj analógico, le comenté a
Andrew que su publicación en X me inspiró a crear un reloj analógico
completamente integrado en un gráfico de dispersión XY. Y eso es lo que he
hecho para poder publicar este artículo.
De todos modos puedes ver el "estado del arte" de varias IA generando código
HTML para crear relojes analógicos en tiempo real en esta página:
Como solo soy un aficionado en HTML/CSS/JS, he necesitado la ayuda de la IA
de Microsoft Copilot para crear este reloj analógico y digital, y así poder
incrustarlo en mi blog:
Aún no he conseguido que se vean los 60 puntos donde no haya números de
horas. ¿Me ayudas a conseguirlo?
Videotutorial para aprender a crear el reloj analógico
En este vídeo he intentado explicar cómo he creado el nuevo reloj analógico
en Excel.
Cómo crear el reloj analógico
Creo que en el vídeo anterior está suficientemente explicado cómo crear un
reloj analógico en Excel, pero aquí daré algunos detalles más, que explican
mejor los problemas que he tenido al crearlo.
La primera idea fue crearlo en un único gráfico combinado por varios
gráficos de dispersión.
Dicho gráfico combinaba 9 series distintas:
Centro: Con un gráfico de dispersión, para crear el punto central
donde se unen las agujas del reloj.
Horas: Con un gráfico de dispersión con líneas rectas, para crear
la aguja de las horas.
Minutos: Con un gráfico de dispersión con líneas rectas, para
crear la aguja de los minutos.
Segundos: Con un gráfico de dispersión con líneas rectas, para
crear la aguja larga de los segundos.
Seg2: Con un gráfico de dispersión con líneas rectas, para
crear la aguja corta de los segundos.
N. Hora: Con un gráfico de dispersión con líneas rectas
ocultas pero con etiquetas, para crear los números de las horas, del 1 al
12 o del 13 al 24.
N. Min.: Con un gráfico de dispersión con líneas rectas
ocultas pero con etiquetas, para crear los números de los minutos, del 0
al 59.
Puntos X: Con un gráfico de dispersión, para crear los 60
puntos del minutero o del segundero.
Esfera X: Con un gráfico de dispersión con líneas suavizadas,
para crear el círculo del reloj.
ATENCIÓN:
Al cambiar el idioma, cambian los nombres de las series, pues se traducen
los encabezados de la fila 1 de la hoja 'Datos'...
Las series N. Hora y N. Min. se creaban con el contenido de la
etiqueta marcando: Valor de las celdas, y presionando el botón:
Seleccionar rango...
Para N. Hora:
=Datos!$F$2:$F$62
Para N. Min.:
=Datos!$I$2:$I$62
Pero seleccionar rango de etiquetas de datos no es compatible
con Excel 2010, pues creo que apareció por primera vez en Excel 2013.
Al abrir ese gráfico combinado con esas dos series, los números de horas y
de minutos generan errores debidos a los rangos de etiquetas, por lo que no
se ven los números si las series N. Hora y N. Min. son gráficos de
dispersión con rangos para las etiquetas de datos.
El resultado erróneo se muestra en esta imagen animada, junto con el
resultado correcto de usar gráficos de burbujas en Excel 2010:
No se puede conseguir que Excel 2010 muestre correctamente los números de
horas y de minutos con un único gráfico combinado, debido al problema
descrito anteriormente.
AVISO:
Como a mí me gusta que mis archivos sean compatibles en cualquier versión a
partir de Excel 2010, ya que fue la versión con la que adquirí mis primeras
experiencias en Excel y de la que tengo muy buenos recuerdos, he tenido que
crear un segundo gráfico con dos series de burbujas, ya que no se pueden
combinar a la vez gráficos de dispersión y de burbujas...
La siguiente imagen muestra los gráficos de burbujas separados de los de
dispersión, que se han ocultado para mayor claridad. También muestra el
grupo creado con los dos gráficos y la elipse de fondo.
TRUCO 1: Con la elipse de fondo se añade un círculo exterior adicional, y
sobre todo sirve para colorear el interior del reloj, pues los gráficos de
dispersión y de burbujas no permiten colorear fácilmente las regiones
interiores de sus puntos o líneas.
En el Gráfico Reloj Analógico está el gráfico combinado por 7
gráficos de dispersión.
En el gráfico de Burbujas Reloj Analógico está el gráfico de
burbujas, que muestra los números de horas y de minutos, con las dos series
N. Hora y N. Min.
En la imagen de la izquierda están los valores de la serie N. Hora.
En la imagen de la derecha están los valores de la serie N. Min.
TRUCO 2:
Los rangos que definen el Tamaño de burbuja de la serie sirven como
valores de etiquetas para los números de horas y de minutos.
En las Opciones de etiqueta hay que marcar: Tamaño de la burbuja
AVISO:
En Excel 2010 no existe la opción: Valor de las celdas, y por eso
genera error al abrir un archivo creado en versiones posteriores de Excel
con esa opción.
TRUCO 3: A la fórmula de la celda Datos!J2, arrastrada hasta Datos!J62 con los
tamaños de las burbujas de la serie N. Min., se le suma una milésima,
para que no haya ninguna burbuja con un tamaño cero:
Así se consigue que aparezca el número 0 en los números de minutos, pues si
fuera exactamente de tamaño 0 no se vería ni la burbuja ni la etiqueta con
el número 0.
TRUCO 4:
Las burbujas se ocultan pues no hacen falta, sin relleno y sin línea de
borde. Sólo son necesarias las etiquetas con el tamaño de cada burbuja.
Los valores X e Y de las dos series de burbujas determinan la posición de
dichos números en un círculo interior del reloj analógico.
Por lo que el archivo del Reloj Analógico, que puedes descargar más
arriba, es compatible con cualquier versión, desde Excel 2010 hasta
Excel para Microsoft 365, y también en Excel para la Web. ¡Como me había
propuesto!
Las macros del archivo descargado están bloqueadas por defecto. Para
desbloquear las macros debes modificar las Propiedades del archivo
siguiendo estas instrucciones:
Abre el archivo y presiona el botón: Habilitar edición cuando
aparezca el aviso de VISTA PROTEGIDA.
Presiona el botón: Habilitar contenido cuando aparezca la ADVERTENCIA
DE SEGURIDAD Las macros se han deshabilitado o se deshabilitó parte del
contenido activo.
ATENCIÓN:
Se puede modificar este libro de Excel respetando esta licencia:
PA1 - Mapamundi con relojes en Excel
-
🔝*To translate this blog post to your language, select it in the top left
Google box. *
DEDICATORIA:
Dedico este y los próximos artículos a mi amig...
Scipy-statistics with all distributions
-
Following the previous post the Scipy statistics functions have been
updated to include all the distributions, including the discrete
distributions. The in...
Power Pivot en Excel primeros pasos
-
Empezar a conocer Power Pivot en Excel En este artículo te voy a contar
sobre qué es Power Pivot en Excel y algunas de las acciones que puedes
realizar c...
Funciones definidas para tipos de números (1)
-
*Introducción*
En algunos cálculos se desea poder usar funciones definidas del tipo
PRIMO(N), PELL(N), que se puedan integrar en expresiones, como 2*PRI...
Build a Daily Events Calendar in Excel
-
Use my Excel events calendar to track meetings and events inside a
workbook. Add your upcoming events to a list, set a start date, and then
see those items...
Cómo hacer gráficos en Excel
-
Excel es una de las herramientas más potentes y versátiles para el análisis
y la presentación de datos. Los gráficos en Excel no solo ayudan a
visualizar...
Análisis DAFO (FODA, DOFA) las decisiones con Excel
-
Para conocer la situación de una empresa, proyecto o persona, recurrimos al
análisis DAFO (FODA, DOFA) en la toma de decisiones con Excel. El los años
sese...
How To Predict Bearing Life With Excel
-
When you work in mechanical engineering, understanding the reliability and
performance of bearings under various conditions is crucial. Bearings are
the co...
TikTok’s search evolution
-
2 in 5 Americans use TikTok as a search engine. Nearly 1 in 10 Gen Zers are
more likely to rely on TikTok than Google as a search engine. More than
half of...
Unblocking and Enabling Macros
-
When Windows detects that a file has come from a computer other than the
one you're using, it marks the file as coming from the web, and blocks the
file....
La importancia de saber mecanografía en 2022
-
[image: Resultado de imagen de mecanografía viñeta escribiendo a máquina]
Según la RAE, la mecanografía es el arte de escribir a máquina. Hace unos
cuantos...
London Excel Meetup Workbooks
-
The workbooks used in my presentation on “Analytical and Interactive
Dashboards in Excel” at the London Excel Meetup, September 3, 2020
International Keyboard Shortcut Day 2019
-
The first Wednesday of every November is International Keyboard Shortcut
Day. This Wednesday, people from all over the world will become far less
efficient...
Welcome, Prashanth!
-
Last March, I shared that we were starting to look for a new CEO for Stack
Overflow. We were looking for that rare combination of someone who… Read
more "W...
Salvador Sostres, analfabeto profesional
-
Los nuevos tiempos traen nuevas profesiones. Internet, además, ha
revolucionado el mundo del periodismo y la palabra escrita. Adaptarse o
morir, ese es el ...
Planificación de compras
-
Realizar una lista con los productos que necesitamos y que formarán parte
de nuestra cesta de la compra nos ayuda a *encontrar la combinación de
bienes p...
Mis metas son seguir superando nuevos retos en Excel y compartirlos en mi blog, para sacarle todo el poder a esta excelente herramienta multiusos, tan usada y a la vez tan incomprendida, para así poder mejorar nuestros conocimientos de Excel.