sábado, julio 15, 2006

Insertar un calendario permanente en hojas de calculo Excel con Controles ActiveX

Ayer vimos como usar controles ActiveX en hojas de Excel. Para insertarlos debemos previamente activar la barra de herramientas del Cuadro de Controles. En la esquina inferior derecha de la barra del Cuadro de Controles, está el icono "más controles".

Al activarlo tendremos acceso a muchos más controles (no todos disponibles para las hojas de cálculos). Uno de ellos es el Calendar Control, que nos permite insertar un calendario permanente en la hoja de cálculos.



Para insertar el calendario en una hoja Excel, procedemos como con los otros controles ActiveX, como mostramos en la entrada anterior.

Una vez insertado en la hoja, abrimos el menú de propiedades, para adpatar el calendario a nuestras necesidades

En este calendario_spejemplo de calendario en Excel, tenemos una tabla con ventas diarias en la Hoja2. En la Hoja1 insertamos el calendario, y lo ligamos (LinkedCell) a la celda B7 (que no será visible al estar cubierta por el calendario).

En la celda B14 introducimos esta fórmula, que usa la celda ligada B7 como argumento

=FECHANUMERO(B7)

Esta formula convierte el valor textual del calendario a una fecha. En la celda C14 introducimos una función BUSCARV, para obtener el valor de las ventas correspondientes a la fecha elegida en el calendario

=SI(B14>MAX(Hoja2!A:A);"fecha sin datos";BUSCARV(B14;Hoja2!A:B;2;0))

la condición lógica con la función MAX, nos permite evitar valores erróneos cuando se elige una fecha que no exste en la tabla de ventas.

Ahora, podemos elegir la fecha en el calendario y ver la suma de ventas correspondientes en la celda C14.





Además del menú de propiedades en la barra de herramientas, también se puede cliquear con el boton izquierda el control y abrir este diálogo





Categorías: Varios_

Technorati Tags: ,

47 comentarios:

  1. es posible poner la fecha en una celda sin tener que digitarla, si no que seleccionandola de un calendario, por ejemplo de un menu desplegable que aparesca un calendario en la celda se escoja la fecha y esta sea asignada a la celda.
    Si me puede ayudar julianprada@gmail.com

    ResponderBorrar
  2. Hola Julián

    la forma más práctica de crear una lsita desplegable que se abra al activar una celda es usar Validacion de Datos.
    Si quieres usar un calendario, me parece que la forma de hacerlo sería creando un evento que dispare el calendario cualdo se activa una celda de un rango determinado.

    ResponderBorrar
  3. Gracias Jorge por la respuesta, he usado una validacion para este fin, pero quisiraalgo mas grafico como el calendario que me permita visualizar el mes y los dias, y si seria de mucha utilidad que me ayudara con un ejemplo.

    Gracias.

    ResponderBorrar
  4. Hola Julián
    he decidido escribir una nota sobre el tema. Espero publicarla en los próximos días.

    ResponderBorrar
  5. Gracias Jorge estare pendiente.

    ResponderBorrar
  6. Hola Julián
    puedes ver el ejemplo en esta nota

    ResponderBorrar
  7. Hola buenas tardes, trate de hacer lo del calendario pero cuando abro los controles nome aparece el Calendar control, hay alguna manera de que aparezca?? o es mi version de excel??

    ResponderBorrar
  8. Tienes que tener el Calendar Control instalado, Lo puedes verificar en la lista de controles disponibles, como muestro en esta nota.
    Si no aparece puedes descargarlo en esta página.

    ResponderBorrar
  9. Buenas, he seguido tu blog una temporada, y he aprendido mucho, ahora necesito para unos documentos, poner la fecha completa todos los dias, (la fecha del dia que listo los trabajos) en una celda con este formato "Lunes, 26 de noviembre de 2007" como podría hacerlo, para que me cogiera la fecha del lunes automaticamente, o del martes.
    Osea hoy pondria eso, pero si lo hago mañana que automaticamente me pusiera "Martes, 27 de Noviembre de 2007" creo que me has entendio.

    Un saludo atrona00@gmail.com

    ResponderBorrar
  10. Hola Atronao

    el formato de la fecha depende de la definición de formato que hayas elegido para la celda (Formato--Celda--Fecha).
    No entiendo del todo que quieres decir con poner la fecha automáticamente. Si das el formato indicado, la fecha aparecerá en la celda con el nombre del día.
    Si quieres que la fecha aparezca en una celda automáticamente al abrir el cuaderno, tendrías que usar macros.

    ResponderBorrar
  11. Saludos:

    Me podrias ayudar con lo del LinkedCell) trato de ponerlo en las propiedades cuando lo escribo le doy enter el cuadro siempre se queda en blanco no lo guarda.

    ResponderBorrar
  12. Uly

    puedes mandarme el archivo para ver dónde pueda estar el problema?

    ResponderBorrar
  13. Hola Jorge,
    He descubierto tu blog recientemente y es lo mas util que he encontrado nunca para trabajar con excel. Muchas gracias.

    Te queria hacer una consulta sobre fechas. Quiero que en un parte de horas trabajadas, cuando el empleado introduzca las horas dedicadas a una tarea, por defecto, en la columna de fecha aparezca la fecha en la que introdujo la tarea, para ello uso la funcion HOY(). Mi problema es que quiero que esa fecha se quede almacenada con el valor introducido la primera vez, ya que la siguiente vez que abro el libro, la funcion HOY() actualiza de nuevo la fecha de la tarea al dia actual.

    ResponderBorrar
  14. Hola Luis
    efectivamente, HOY() es volátil y por lo tanto es recalculada cada vez que sucede algún cambio en la hoja.
    La solución es programar un evento que imprima en la celda requerida la fecha en que el valor ha sido introducido.

    ResponderBorrar
  15. HOLA JORGE:
    Estoy conociendo recien tu blog y me ha resultado de mucha utilidad.
    Tengo un problema con un calendario de pagos, necesito que con referencia a el se incerte la fecha de pago en una hoja de calculo llamada comprobante de facturacion. Este calendario de pago esta marcado segun las fechas de entrega de documentos y fecha de pago con cheque, podria haber tratado con la formula condicional pero el problema es que las fechas de pago no siguen un orden correlativo

    ResponderBorrar
  16. No es necesario que las fechas sigan un orden correlativo para usar una fórmula condicional.
    Puedes enviarme el archivo por mail para que vea qué es lo que quieres hacer.

    ResponderBorrar
  17. hola, gracias por el post
    Quisiera saber, como, usando el calendario ya mencionado, al dar click en un día, me aparezca en las celdas de abajo, una información de otra hoja ... es decir, en una hoja llevo un registro de evtnos diarios de mi trabajo, quisiera que el calendario, al dar click en cierto día, me mostrara la informacion relacionada con ese día la cual almaceno en otra hoja.

    gracias!!!

    ResponderBorrar
  18. Leo
    habría que ver cómo están organizados los datos en la hoja, pero me parece que sería más práctico usar una tabla dinámica donde en el campo de página eligirías la fecha. En definitiva, todo lo que hace el calendario es poner la fecha elegida en una celda.

    ResponderBorrar
  19. Me gustaria hacer un calendario perpetuo incluyendo el numero de semanas del año, pero hacerlo con formulas ¿Como los hago?

    ResponderBorrar
  20. ¿Has consultado en los foros de Excel? En esta nota del blog he mostrado como hacer un calendario permanente con fórmulas. Este puede ser tu punto de partida, sólo habría que agregar lase semanas (tal vez lo muestre en alguna futura nota)

    ResponderBorrar
  21. NECESITO QUE EXCEL ME AVICE DE FECHAS VENCIDAS O POR VENCER, MEDIANTE UN MENSAJE ESTO SERÍA SIMILAR A OUTLOOK, ESTAS FECHAS LAS TENGO PUESTAS EN LAS CELDAS. COMO PODRIA HACERLO

    ResponderBorrar
  22. Anónimo, ¿por que en mayúsculas? Es como si estuvieras gritando.
    Tienes que programar un evento. Puedes hacer una búsqueda en el blog con la palabra "evento" y leer las distintas notas sobre el tema.

    ResponderBorrar
  23. Jorge,

    ¿Se podrían poner 2 calendarios en una misma hoja y controlar que la fecha del segundo sea siempre igual o posterior a la del primer calendario?
    Sin macros o eventos supongo que no se podrá, pero con macros o eventos, cómo sería?
    Un saludo,
    Sergio

    ResponderBorrar
  24. Si, se puede y efectivamente, hay que usar macros. Por ejemplo, se podría programar un evento que abra un segundo calendario cuando se haya elegido una fecha en el primero. También se puede pasar la fecha elegida en el primero para determinar en que fecha se abrirá el segundo.
    Pero la técnica y el código exceden el marco de un comentario.

    ResponderBorrar
  25. Utilizando este calendario se podría hacer que debajo de él aparecieran varias filas con información respecto a un día?? es decir, por ejemplo, en lugar de las ventas totales, que al elegir una fecha pusiera por filas, cada una de las ventas que se realizaron ese día??

    ResponderBorrar
  26. Si, se puede pero la solución no es trivial. Por ejemplo, se podría usar la fecha del calendario como argumento en una macro que filtre la tabla de ventas; o se podría hacer algo similar con una tabla dinámica + evento (macro).
    También es posible diseñar una solución con fórmulas, pero sería complicada.

    ResponderBorrar
  27. Estimado Sr. Jorge Dunkelman:
    He estado modificando un calendario perpetuo en excel, denominado yearly_event_calendar.xls, que bajé desde www.vertex42.com/calendars, que goza de gran flexibilidad, para adaptarlo a mis necesidades personales y respetando localismos nacionales.
    Dicho calendario me ofrece formatos condicionales que yo no sabía como utilizar y con él lo aprendí.
    Pero ahora me veo en la necesidad de preparar una función de excel que me permita elegir una serie de días de la semana comprendidos entre dos fechas, con exclusión de los demás; es decir, me refiero a una función que seleccione, por ejemplo, los terceros lunes de todos los meses comprendidos entre, por ejemplo, el 3 de marzo y el 18 de diciembre del año en curso, y que además, cuando el mes tenga, un quinto lunes, lo saltee y vaya al primero del mes siguiente, salvo que se le pida que los tome en consideración.
    He estdo probando con algunas de las fórmulas que Ud. publicó, pero no tengo los conocimientos suficientes.
    Viendo que Ud. amablemente desasna a quienes le plantean problemas de excel, le agradeceré su gentil ayuda, que, desde ya, doy por descontada.
    Atte.
    Eduardo Daniel Vázquez

    ResponderBorrar
  28. Eduardo,
    las funciones no pueden elegir o modificar de ninguna manera los objetos de la hoja. Las funciones sólo pueden dar resultados (numéricos, textuales o booleanos).
    Tampoco me queda claro sin la intención de "elegir" es que las fechas aparezcan en algún lugar de la hoja o sean resaltadas en el calendario. Esto último podría hacerse con formato condicional, cualquier otra opción requeriría el uso de macros.

    ResponderBorrar
  29. estimado Sr. Dunkelman:
    Quizá no me expresé con suficiente claridad o precisión, por lo cual me tomo el atrevimiento de molestarlo nuevamente.
    Mi necesidad concreta consiste en poder hacer automáticamente un listado de fechas en una columna a mi elección, que respete estas condiciones:
    Dicho listado debería comprender determinados días de la semana, por ejemplo, los primeros y terceros lunes de todos los meses comprendidos entre dos fechas, como ser, el 3 de marzo y el 11 de diciembre, con posibilidad de excluir un período intermedio de fechas, tales como las que hay entre las vacaciones de invierno; asimismo, para el caso de que exista un mes con cinco lunes, que excluya este y pase al siguiente, salvo elección contraria. Los valores del díasem(), así como si se trata de primeros, segundos, terceros o cuartos, se definirían en sendas celdas, así como las fechas de inicio y fin del período, y las del plazo excluído.
    Lamentando molestarlo con mi ignorancia, quedo de Ud. agradecido por cualquieer ayuda u orientación.
    Eduardo Daniel Vázquez

    ResponderBorrar
  30. Dada la complejidad de la tarea y el hecho que lo que se quiere es crear una lista, no calcular un valor, la opción más razonable es programar una macro.

    ResponderBorrar
  31. Hola, Excelente blog.
    Tengo una consulta.
    Tengo dos calendarios uno de Check-in y otro de Check-out.
    Al escoger en el Calendar1 la fecha check-in se cierra dicho calendar y se abre el de Check-out.
    Este calendar2 se abre con la fecha de hoy y lo que quiero es que comience a partir de la fecha Check-In.
    Es posible realizar esto??

    saludos
    Alvaro

    ResponderBorrar
  32. Alvaro,
    se puede hacer, pero tendrás que usar Vba (macros). El calendario es un objeto y la fecha que muestra es unapropiedad que puede ser establecida programáticamente. A pesar de no estar directamente relacionadoa con el tema, esta nota te puede dar una orientación.

    ResponderBorrar
  33. Buenos días,

    Gracias por tus aportaciones. Me gustaría preguntarte si habría algún método para poder pasar algunos datos de una tabla excel donde se ordenan las entregas de distintos proyectos por fechas, a un calendario (mensual por ejemplo), donde en las casillas correspondientes a los días de entrega aparezcan los nombres de los proyectos a entregar, de forma que de un solo golpe de vista se vean las citas que hay a lo largo del mes. Si fuese posible, ¿sería muy complicado?

    Muchas gracias por anticipado y Felices Fiestas!

    ResponderBorrar
  34. Se puede hacer en Excel, pero no es una tarea sencilla. Pero, ¿por qué no usar Outlook que supongo que tienes instalado con el paquete de Office?
    Si quieres hacerlo con Excel puedes echarle un vistazo a mi Planificador de Proyectos.

    ResponderBorrar
  35. Hola Jorge y antes de nada gracias por tu respuesta.
    He estado mirando tu planificador, pero no es lo que necesito, de todas formas de nuevo gracias y un saludo.

    ResponderBorrar
  36. NECESITO CREAR UNA LISTA EXEL DE CALENDARIO DIA A DIA DESDE 5000 ANTES DE CRISTO,,,, COMO LO LOGRO?????

    ResponderBorrar
  37. Hola Jorge,
    Estoy intentando aplicar tus conocimientos para crear un calendario en un formulario para ejecutarse con excel 2007. El problema lo tengo con que lo estoy desarrollando desde un Excel 2010 y debe ser compatible en ambos (o por lo menos en el 2007). No me puedo instalar el complemento MSCAL porque no tengo permisos de administración. Una solución sería hacerme un calendario en un listbox o similar o se te ocurre algún consejo mejor?
    Muchas gracias de antemano y enhorabuena por tu blog!

    ResponderBorrar
  38. Buenas tardes,

    En incluido el control de calendario en una hoja Excel usando este tutorial, pero me surge el siguiente problema. Creo el calendario, le doy formato y pongo el tamaño a mi gusto. Pero cuando cierro el libro y lo vuelvo a abrir, el calendario ha encogido de tamaño. He intentado de mil formas hacer que el calendario mantenga el tamaño con el que yo lo dejo, pero es imposible. Siempre que abro el libro de nuevo, sale más pequeño.

    Por favor, ¿me puedes ayudar a entender qué pasa?

    Muchas gracias.

    ResponderBorrar
  39. ¿Qué versión de Excel estás usando? ¿Puedes enviarme el archivo?

    ResponderBorrar
  40. Saludos, Sr. Dunkelman.
    A ver si puede ayudarme con este problema. He creado un control ActiveX de imagen en una hoja de Excel 2007. Al clicarlo, y mediante programación VBA, hago que se cree un control de calendario y lo activo. Una vez elegida una fecha en él, ésta se recoge en una celda y el control de calendario se borra. El problema es que cada vez que se crea y activa el control de calendario al clicar sobre la imagen, se abre también la ventana "Propiedades de calendario". Hay que dar a Cancelar para poder operar con el calendario como se ha descrito arriba. He intentado definir esas propiedades en tiempo de ejecución pero no logro evitar esa ventana. ¿Alguna idea?
    Muchas gracias por su atención.

    ResponderBorrar
  41. Tendría que ver la hoja y el código. Puedes mandármela por mail privado (fijate en el enlace Ayuda, en la parte superior de la plantilla).

    ResponderBorrar
  42. Necesito utilizar el calendario para contar los dias laborados por un trabajador. COMO PODIA HACER ESTO? gracias

    ResponderBorrar
  43. Para contar los días trabajados todo lo que hay que hacer es una resta (fechas actual - fecha del comienzo), o usar la función SIFECHA, o DIAS.LAB.

    ResponderBorrar
  44. Hola, necesito su ayuda. Estoy tratando de hacer una hoja para cada miembro de la iglesia en donde incluyo su diezmo y ofrenda. Me gustaria que la hoja incluya todos los sabados y domingos del 2015 solamente, para luego poder hacerle la hoja de diezmos para su planilla de contribucion. Como le incluyo las fechas que necesito.

    ResponderBorrar
  45. Estimado, te sugiero que me envíes el archivo por mail (fijate en el enlacec Ayuda, en la parte superior del blog).

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.