¿Habrá algo que no se pueda hacer con Excel y Vba? La gente del excelente sitio Spreadsheet1.com ha publicado una versión en Excel del super adictivo juego 2048.
(La imagen la he tomado sin permiso del sitio, espero que no se enojen :))
La descarga es gratuita y como si esto fuera poco el código es totalmente accesible desde el editor de Vb, sin contraseñas.
Además hay un tip para resolver el juego y un enlace a la versión WEB del mismo.
¡Que lo disfruten!
La página de descargas de Add-Ins del sitio no tiene desperdicio (incluye una tabla predictiva del mundial 2014) lo mismo que los tutoriales.
Sugerencias y ayuda para Excel en español. Ejemplos de funciones y fórmulas, gráficos, automatización con Vba, Power Query y PowerPivot
Mostrando las entradas con la etiqueta Varios. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Varios. Mostrar todas las entradas
domingo, junio 08, 2014
martes, abril 08, 2014
El error "demasiados formatos de celdas" en Excel
Todo quien haya trabajado suficiente tiempo con Excel se ha topado en alguna oportunidad con el error "demasiados formatos de celda diferentes" (too many different cell formats)
o, en Excel 2003, con
o, en Excel 2007-2013, con
De acuerdo a la base de datos de conocimientos de Microsoft:
Hay todo tipo de medidas que pueden y deben tomarse para evitar este problema. Pero si nos topamos con él, la mejor herramienta es XLStylesTool. Esta herramienta, que se puede descargar en forma gratuita, fue desarrollada por Sergei Gundorov, quien se merece todo nuestro agradecimiento.
o, en Excel 2003, con
Excel ha encontrado un error y se tuvieron que quitar parte del formato para evitar dañar el libro
o, en Excel 2007-2013, con
Excel encontró contenido no legible en el archivoOtros síntomas ligados a este error pueden ser:
- al abrir un archivo se elimina todo el formato;
- incremento en el tamaño del archivo después de copiar-pegar entre libros
- imposibilidad de pegar lo que se ha copiado al portapapeles (aparece el mensaje "Microsoft Excel no puede pegar datos")
De acuerdo a la base de datos de conocimientos de Microsoft:
Este problema se produce cuando el libro contiene más de aproximadamente 4.000 combinaciones diferentes de formatos de celda en Excel 2003 o 64.000 en Excel 2007 y posteriores. Una combinación se define como un conjunto de elementos que se aplican a una celda de formato único. Una combinación incluye todo el formato de fuente (por ejemplo: tipo de letra, tamaño de fuente, cursiva, negrita y subrayado), bordes (por ejemplo: ubicación, grosor y color), los patrones de celdas, formato, alineación y protección de celda de número.
Hay todo tipo de medidas que pueden y deben tomarse para evitar este problema. Pero si nos topamos con él, la mejor herramienta es XLStylesTool. Esta herramienta, que se puede descargar en forma gratuita, fue desarrollada por Sergei Gundorov, quien se merece todo nuestro agradecimiento.
miércoles, septiembre 12, 2012
Más sobre el extraño caso del signo más en Excel
En la nota anterior vimos el extraño caso del signo más en Excel, producto de los problemas de compatibilidad con Lotus 1-2-3
y mostramos la solución.
Pero sucede que esta solución tiene efectos secundarios, como me señala el amigo Sebastián, asiduo lector del blog.
Normalmente, si ingresamos el valor “28-8-2012” en una celda, Excel lo transforma automáticamente en la fecha 28/8/2012
Veamos que pasa después de marcar las opciones de compatibilidad con Lotus 1-2-3
Excel realiza la operación (28-8-2012 = -1992), en lugar de convertirlo en fecha.
A diferencia del caso anterior, esto no parece estar relacionado al formato de la celda. También si la celda tiene el formato General, Excel realiza la operación en lugar de poner la fecha.
y mostramos la solución.
Pero sucede que esta solución tiene efectos secundarios, como me señala el amigo Sebastián, asiduo lector del blog.
Normalmente, si ingresamos el valor “28-8-2012” en una celda, Excel lo transforma automáticamente en la fecha 28/8/2012
Veamos que pasa después de marcar las opciones de compatibilidad con Lotus 1-2-3
Excel realiza la operación (28-8-2012 = -1992), en lugar de convertirlo en fecha.
A diferencia del caso anterior, esto no parece estar relacionado al formato de la celda. También si la celda tiene el formato General, Excel realiza la operación en lugar de poner la fecha.
domingo, agosto 26, 2012
EL extraño caso del signo más (+) en Excel.
Excel tiene ciertas zonas un poco tenebrosas donde no todo funciona, o parece funcionar, como esperamos. Pero el usuario avisado puede evitar entrar en esos oscuros callejones…
Vimos el caso de los resultados incorrectos de CONTAR.SI. Hoy vamos a ver cierto comportamiento extraño del símbolo “más” (+).
Todos sabemos que si iniciamos una fórmula con el “más” (+) Excel lo transforma automáticamente en “igual” (=). El símbolo + era el usado en Lotus 1-2-3, el antecesor de Excel.
Por ejemplo, si introducimos en una celda “+10/2.5”, veremos en la barra de fórmulas que Excel lo transforma en “=10/2.5” y el resultado es 4
Ahora veamos que pasa con esta operación cuando la celda tiene un formato distinto al General
Excel graciosamente nos informa que hay un error en la fórmula. No voy a intentar explicar este fenómeno por la sencilla razón que no tengo la menor idea por qué sucede. Pero si puedo exponer la solución.
En Excel 2010 activamos Archivo-Opciones-Avanzada y al final del formulario señalamos la opción “Introducción de fórmulas de transición” y apretamos Aceptar.
En Excel 2007
En Excel 2003
Vimos el caso de los resultados incorrectos de CONTAR.SI. Hoy vamos a ver cierto comportamiento extraño del símbolo “más” (+).
Todos sabemos que si iniciamos una fórmula con el “más” (+) Excel lo transforma automáticamente en “igual” (=). El símbolo + era el usado en Lotus 1-2-3, el antecesor de Excel.
Por ejemplo, si introducimos en una celda “+10/2.5”, veremos en la barra de fórmulas que Excel lo transforma en “=10/2.5” y el resultado es 4
Ahora veamos que pasa con esta operación cuando la celda tiene un formato distinto al General
Excel graciosamente nos informa que hay un error en la fórmula. No voy a intentar explicar este fenómeno por la sencilla razón que no tengo la menor idea por qué sucede. Pero si puedo exponer la solución.
En Excel 2010 activamos Archivo-Opciones-Avanzada y al final del formulario señalamos la opción “Introducción de fórmulas de transición” y apretamos Aceptar.
En Excel 2007
En Excel 2003
sábado, mayo 26, 2012
Fijar vínculos entre hojas de cuadernos Excel
Al crear vínculos entre rangos de distintos cuadernos, como vimos en esta nota, puede presentarse un problema al introducir cambios en el cuaderno de origen.
Vamos a mostrarlo con un ejemplo. Supongamos dos cuadernos, Origen y Base. En la celda C2 de la hoja1 de Base creamos un vínculo a la celda C2 de la hoja1 de Origen
En la barra de las fórmulas podemos ver que el valor se refiere a la celda C2 del cuaderno Origen.
Guardamos y cerramos el cuaderno Base. Abrimos el cuaderno Origen y movemos le valor de la celda C2 a la celda D2. Guardamos el cuaderno Origen y lo cerramos.
Al volver a abrir el cuaderno Base veremos que el cambio en Origen no se refleja en la celda vinculada y por lo tanto muestra un valor erróneo
Esto se debe a que efectuamos el cambio en Origen después de haber cerrado el cuaderno Base. El vínculo en Base sigue refriéndose a la celda C2 de Origen.
Una solución a este problema es mantener ambos cuadernos abiertos hasta finalizar de realizar todos los cambios.
Una solución más segura es usar nombres. En nuestro caso creamos un nombre que se refiere al rango C2 en la hoja Origen (“DatoParaBase”)
Si movemos el valor de la celda C2 en origen y guardamos el cuaderno, al abrir Base veremos que la referencia se ajusta automáticamente (en lugar de la referencia C2 aparece el nombre que se refiere al rango)
Esta técnica funcionará también si Origen esta cerrado al abrir Base.
Vamos a mostrarlo con un ejemplo. Supongamos dos cuadernos, Origen y Base. En la celda C2 de la hoja1 de Base creamos un vínculo a la celda C2 de la hoja1 de Origen
En la barra de las fórmulas podemos ver que el valor se refiere a la celda C2 del cuaderno Origen.
Guardamos y cerramos el cuaderno Base. Abrimos el cuaderno Origen y movemos le valor de la celda C2 a la celda D2. Guardamos el cuaderno Origen y lo cerramos.
Al volver a abrir el cuaderno Base veremos que el cambio en Origen no se refleja en la celda vinculada y por lo tanto muestra un valor erróneo
Esto se debe a que efectuamos el cambio en Origen después de haber cerrado el cuaderno Base. El vínculo en Base sigue refriéndose a la celda C2 de Origen.
Una solución a este problema es mantener ambos cuadernos abiertos hasta finalizar de realizar todos los cambios.
Una solución más segura es usar nombres. En nuestro caso creamos un nombre que se refiere al rango C2 en la hoja Origen (“DatoParaBase”)
Si movemos el valor de la celda C2 en origen y guardamos el cuaderno, al abrir Base veremos que la referencia se ajusta automáticamente (en lugar de la referencia C2 aparece el nombre que se refiere al rango)
Esta técnica funcionará también si Origen esta cerrado al abrir Base.
sábado, mayo 28, 2011
Ajustar texto de fechas con formato personalizado
Después de otra semana intensa de actividad, veo que llevo un buen atraso en responder a muchas de las consultas que me han llegado últimamente. Así que voy a aprovechar esta nota para disculparme y para volver a explicar que no siempre puedo (y a veces, no quiero) responder a las consultas.
Como prueba de buena voluntad voy a mostrar un pequeño truco con formato personalizado de números. En uno de los muchos foros de Excel apareció esta pregunta:
Una forma de hacerlo es editando la celda, poniendo el cursor delante de la hora y apretando Alt+Enter.
Pero la idea es definir un formato personalizado, de manera que no tengamos que editar cada una de las celdas.
El truco es el siguiente:
Seleccionamos el rango de las celdas y definimos el formato personalizado
En la ventanilla “Tipo” ponemos el cursor del mouse en el lugar del formato donde queremos dividir en dos líneas y pulsamos simultáneamente las teclas Ctrl+J y apretamos “Aceptar”
Con el rango seleccionado definimos “Ajustar texto”
o con el menú Formato de celdas
Finalmente ajustamos el alto de la fila
También podemos ir más adelante y dividir la celda en tres líneas, usando dos veces Ctrl+J
Para lograr este formato en la ventanilla “Tipo” del formulario de formato personalizado de números ponemos
“día:” dd (nótese las comilla) y un espacio
Apretamos Ctrl+J
“mes:” mmmm y un espacio
Apretamos Ctrl+J
“año:” aaaa
Apretamos “Aceptar” y definimos “Ajustar texto”. Si vemos esta situación
formFecha08
tenemos primero que cambiar el ancho de las columnas y luego el alto de la fila.
El truco fue mencionado por Rick Rothstein (si, el mismo de la prueba del nueve).
Como prueba de buena voluntad voy a mostrar un pequeño truco con formato personalizado de números. En uno de los muchos foros de Excel apareció esta pregunta:
Hay alguna manera de ajustar el texto de una fecha con formato “dd/mm/aaaa hh:mm” de manera que la fecha aparezca en la primera línea de la celda y la hora en la segunda”
Una forma de hacerlo es editando la celda, poniendo el cursor delante de la hora y apretando Alt+Enter.
Pero la idea es definir un formato personalizado, de manera que no tengamos que editar cada una de las celdas.
El truco es el siguiente:
Seleccionamos el rango de las celdas y definimos el formato personalizado
En la ventanilla “Tipo” ponemos el cursor del mouse en el lugar del formato donde queremos dividir en dos líneas y pulsamos simultáneamente las teclas Ctrl+J y apretamos “Aceptar”
Con el rango seleccionado definimos “Ajustar texto”
o con el menú Formato de celdas
Finalmente ajustamos el alto de la fila
También podemos ir más adelante y dividir la celda en tres líneas, usando dos veces Ctrl+J
Para lograr este formato en la ventanilla “Tipo” del formulario de formato personalizado de números ponemos
“día:” dd (nótese las comilla) y un espacio
Apretamos Ctrl+J
“mes:” mmmm y un espacio
Apretamos Ctrl+J
“año:” aaaa
Apretamos “Aceptar” y definimos “Ajustar texto”. Si vemos esta situación
formFecha08
tenemos primero que cambiar el ancho de las columnas y luego el alto de la fila.
El truco fue mencionado por Rick Rothstein (si, el mismo de la prueba del nueve).
jueves, mayo 19, 2011
Ser experto en Excel
En un foro de Excel alguien empezó una discusión con el pomposo título:
¿Cuáles son los indicios de que alguien no es un experto en Excel?
¿Por qué comento esto? Una de las consultas que recibo con cierta frecuencia es cómo convertirse en un experto o en un usuario avanzado de Excel.
Por supuesto, la pregunta generó una larga cadena de respuestas, cada una más fuera de lugar que lo otra. Con excepción de una de ellas que transcribo a continuación.
La traducción no es literal, pero refleja cabalmente la intención del autor, y apoyo cada uno de los conceptos vertidos.
¿Qué opinan?
¿Cuáles son los indicios de que alguien no es un experto en Excel?
¿Por qué comento esto? Una de las consultas que recibo con cierta frecuencia es cómo convertirse en un experto o en un usuario avanzado de Excel.
Por supuesto, la pregunta generó una larga cadena de respuestas, cada una más fuera de lugar que lo otra. Con excepción de una de ellas que transcribo a continuación.
La traducción no es literal, pero refleja cabalmente la intención del autor, y apoyo cada uno de los conceptos vertidos.
No creo que la pregunta pueda o deba ser contestada. En primer lugar, es relativa. Hay talentosos desarrolladores de Excel que han asumido el título de "experto", ya que pueden hacer algo que nadie más puede hacer dentro de un radio de 100 kilómetros- lo que significa que no hay nadie alrededor para criticar sus métodos. Por otro lado, hay personas en el sector financiero haciendo cosas con Excel que requieren conocimientos altamente especializados -, pero nunca pretenden ser un "experto ". ¿Quién es el verdadero experto? Depende del proyecto.Yo no podría haberlo dicho mejor.
En segundo lugar, hay diferentes maneras de ser un "experto " en Excel. Hay gente que me sorprende con su capacidad de desarrollar hojas de cálculo basadas en fórmulas - pero nunca ha diseñado un módulo de clase que implemente varias interfaces o controladores de eventos para procesar los mensajes en tiempo real de middleware de terceros. ¿Quién es el verdadero experto? Depende del proyecto.
En realidad, me pregunto si es aconsejable utilizar semejante término en forma tan absoluta. Hay muy pocos criterios objetivos para juzgar esto, y aún menos los que son relevantes en el mundo real. Además, siempre habrá alguien por ahí que es mejor que nosotros – lo garantizo. Entonces, ¿cuál es el punto de pretender ser un "experto "? Uno puede ser realmente bueno, pero a menos que usted esté escribiendo libros técnicos sobre Excel / VBA - o trabajando directamente con los ingenieros de Microsoft para mejorar el software - probablemente no sea un experto. Lo único que importa es si usted puede encontrar la manera inteligente de utilizar Excel para resolver problemas y / o aumentar la eficiencia, y por lo tanto añadir valor a la organización que usted trabaja.
¿Qué opinan?
lunes, marzo 21, 2011
Suma interna de los dígitos de un número con Excel - ampliación
En mi nota anterior sobre la suma interna de los dígitos de un número, propuse esta fórmula para la tarea
=SUMAPRODUCTO(EXTRAE(A2,FILA(INDIRECTO("1:" & LARGO(A2))),1)*1)
También podemos usar
=SUMAPRODUCTO(--EXTRAE(A2,FILA(INDIRECTO("1:" & LARGO(A2))),1))
si preferimos usar la doble negación para convertir los valores VERDADERO o FALSO en 1 o 0.
El problema con esta fórmula es que cuando el resultado es un número de dos dígitos, tenemos que volver a aplicarla, ya sea anidando dos fórmulas o usando celdas auxiliares.
Con esta fórmula podemos realizar la suma interna de los dígitos de un número en una única operación:
=1+RESIDUO(SUMAPRODUCTO(--EXTRAE(A2,FILA(INDIRECTO("1:" & LARGO(A2))),1))-1,9)
Esta fórmula se base en el artificio matemático "Prueba del nueve" y fue propuesta por Rick Rothstein en un comentario en el sitio de Chandoo.
=SUMAPRODUCTO(EXTRAE(A2,FILA(INDIRECTO("1:" & LARGO(A2))),1)*1)
También podemos usar
=SUMAPRODUCTO(--EXTRAE(A2,FILA(INDIRECTO("1:" & LARGO(A2))),1))
si preferimos usar la doble negación para convertir los valores VERDADERO o FALSO en 1 o 0.
El problema con esta fórmula es que cuando el resultado es un número de dos dígitos, tenemos que volver a aplicarla, ya sea anidando dos fórmulas o usando celdas auxiliares.
Con esta fórmula podemos realizar la suma interna de los dígitos de un número en una única operación:
=1+RESIDUO(SUMAPRODUCTO(--EXTRAE(A2,FILA(INDIRECTO("1:" & LARGO(A2))),1))-1,9)
Esta fórmula se base en el artificio matemático "Prueba del nueve" y fue propuesta por Rick Rothstein en un comentario en el sitio de Chandoo.
viernes, octubre 22, 2010
Definir el rango a imprimir según valor en celda
El lector Boris me consulta:
En una celda con datos tipo lista tengo 2 opciones: Factura, Boleta. ¿Es posible hacer una formula con la función SI, para definir el área de impresión, dependiendo de esas dos opciones?
Una vez más aclaremos que las funciones sólo saben hacer cálculos; no podemos hacer cambios estructurales en la hoja o el cuaderno con funciones.
Sin embargo sí podemos definir el rango del área de impresión basándonos en el valor de una celda. Lo haremos usando la técnica que mostré en la nota sobre área de impresión dinámica en Excel sin macros.
El truco consiste en usar nombres. Supongamos que definimos dos rango a imprimir: Area_1 y Area_2
Lo que hemos llamado Area_1 o Area_2 en el ejemplo puede ser factura y recibo o escenario 1 y escenario 2, etc.
Definimos cada uno de los rangos con nombres
El próximo paso es definir una lista desplegable sencilla con validación de datos y ponerla en una celda donde el usuario pueda elegir el rango a imprimir
El último paso es modificar la definición del nombre Area_de_impresion . Esto lo haremos con el asistente de nombres. En la definición del nombre predefinido "Area_de_impresión" ponemos la fórmula
=INDIRECTO(Hoja1!$C$2)
Si al abrir el Administrador de nombres "Área _de_impresión" no aparece, podemos crearlo definiendo un rango arbitrario en "Área de impresión" del menú Configurar página.
La fórmula =INDIRECTO(Hoja1!$C$2) traduce el texto que aparece en la celda C2, donde hemos puesto la lista desplegable, por el rango definido por el nombre que coincide con el valor de la celda.
Este video muestra el funcionamiento
En una celda con datos tipo lista tengo 2 opciones: Factura, Boleta. ¿Es posible hacer una formula con la función SI, para definir el área de impresión, dependiendo de esas dos opciones?
Una vez más aclaremos que las funciones sólo saben hacer cálculos; no podemos hacer cambios estructurales en la hoja o el cuaderno con funciones.
Sin embargo sí podemos definir el rango del área de impresión basándonos en el valor de una celda. Lo haremos usando la técnica que mostré en la nota sobre área de impresión dinámica en Excel sin macros.
El truco consiste en usar nombres. Supongamos que definimos dos rango a imprimir: Area_1 y Area_2
Lo que hemos llamado Area_1 o Area_2 en el ejemplo puede ser factura y recibo o escenario 1 y escenario 2, etc.
Definimos cada uno de los rangos con nombres
El próximo paso es definir una lista desplegable sencilla con validación de datos y ponerla en una celda donde el usuario pueda elegir el rango a imprimir
El último paso es modificar la definición del nombre Area_de_impresion . Esto lo haremos con el asistente de nombres. En la definición del nombre predefinido "Area_de_impresión" ponemos la fórmula
=INDIRECTO(Hoja1!$C$2)
Si al abrir el Administrador de nombres "Área _de_impresión" no aparece, podemos crearlo definiendo un rango arbitrario en "Área de impresión" del menú Configurar página.
La fórmula =INDIRECTO(Hoja1!$C$2) traduce el texto que aparece en la celda C2, donde hemos puesto la lista desplegable, por el rango definido por el nombre que coincide con el valor de la celda.
Este video muestra el funcionamiento
domingo, junio 06, 2010
Más sobre del comando Ir A - Especial de Excel
El blog oficial del equipo de desarrollo de Excel está publicando una serie de notas sobre los atajos de teclado favoritos de sus miembros. Esto me trajo a la memoria una nota que escribí en los albores de este blog sobre el comando Ir A.
En esa nota me limitaba a mostrar cómo seleccionar fácilmente todas las celdas en blanco de un rango. Esto es muy útil cuando tenemos que llenar los vacíos en una columna de una tabla.
Por ejemplo, al importar datos de una base de datos o copiar los valores de una tabla dinámica es muy común tener esta situación (los datos son la base de datos Northwind incluida en las distintas versiones de Office)
Para poder usar estos datos en una tabla dinámica o totalizar con fórmulas u otras tareas por el estilo, tenemos que llenar las celdas en blanco con el nombre del país correspondiente. Lo hacemos fácilmente con Ir a (atajo: F5 o Ctrl+I). Primero seleccionamos todo el rango a rellenar (en nuestro caso A1:A24), luego apretamos F5 (o Ctrl+I) y apretamos el botón Especial
Elegimos la opción Celdas en Blanco y apretamos Aceptar
La celda activa ahora es A3. Apretamos "=" y seleccionamos A2 con el mouse
Finalmente apretamos simultáneamente Ctrl y Enter, obteniendo este resultado
Es recomendable seleccionar nuevamente el rango y convertir todas las referencias en constantes (Copiar-Pegado Especial Valores).
Pero, como podemos ver, hay en Ir A-Especial mucho más. Básicamente, Ir A-Especial nos permite seleccionar rangos de acuerdo a criterios. Veamos algunos usos:
1 – Eliminar todos los comentarios en un rango
En el rango A1:B7 tenemos cuatro comentarios como podemos apreciar por las señales rojas. Seleccionamos todo el rango y usamos Ir a Especial-Comentarios
Abrimos el menú contextual (botón derecho del mouse) y con Eliminar Comentario, quitamos todos los comentarios de una vez.
2 – Constantes/Celdas con fórmulas
En este ejemplo, Ir a Especial-Celdas con fórmulas-Errores, nos permite seleccionar todas las celdas del rango con resultado #N/A. Luego podemos reemplazar el valor de estas celdas con otro (vacío, cero, etc.) de una vez usando Ctrl+Enter.
3 –Diferencias entre filas/Diferencias entre columnas.
Estos comandos nos permiten seleccionar todas las celdas de una columna/fila cuyos valores son distintos de los de las celdas de referencia. La celda de referencia es la ceda activa del rango seleccionado. Veamos estos ejemplos aplicado al rango A1:C3
Después de seleccionar, la celda activa es A1, aplicamos Ir a Especial-Diferencias entre filas
En la fila 1 la celda seleccionada es B1, la única que contiene un valor distinto a la celda de referencia (A1).
En la fila 2 la celda de referencia es A2 y por lo tanto la celda seleccionada es C2.
En la fila 3 las celdas seleccionadas con B3 y C3, que contienen valores distintos a A3.
De la misma manera funciona Diferencias entre columnas
Al principio de la nota vimos como seleccionar todas las celdas en blanco en un rango. Con estos comandos podemos hacer lo opuesto, seleccionar todas las celdas no en blanco del rango. El truco consiste en que la celda de referencia este en blanco. Por ejemplo podemos agregar una fila y una columna en blanco al rango y usar Diferencias entre filas
En esa nota me limitaba a mostrar cómo seleccionar fácilmente todas las celdas en blanco de un rango. Esto es muy útil cuando tenemos que llenar los vacíos en una columna de una tabla.
Por ejemplo, al importar datos de una base de datos o copiar los valores de una tabla dinámica es muy común tener esta situación (los datos son la base de datos Northwind incluida en las distintas versiones de Office)
Para poder usar estos datos en una tabla dinámica o totalizar con fórmulas u otras tareas por el estilo, tenemos que llenar las celdas en blanco con el nombre del país correspondiente. Lo hacemos fácilmente con Ir a (atajo: F5 o Ctrl+I). Primero seleccionamos todo el rango a rellenar (en nuestro caso A1:A24), luego apretamos F5 (o Ctrl+I) y apretamos el botón Especial
Elegimos la opción Celdas en Blanco y apretamos Aceptar
La celda activa ahora es A3. Apretamos "=" y seleccionamos A2 con el mouse
Finalmente apretamos simultáneamente Ctrl y Enter, obteniendo este resultado
Es recomendable seleccionar nuevamente el rango y convertir todas las referencias en constantes (Copiar-Pegado Especial Valores).
Pero, como podemos ver, hay en Ir A-Especial mucho más. Básicamente, Ir A-Especial nos permite seleccionar rangos de acuerdo a criterios. Veamos algunos usos:
1 – Eliminar todos los comentarios en un rango
En el rango A1:B7 tenemos cuatro comentarios como podemos apreciar por las señales rojas. Seleccionamos todo el rango y usamos Ir a Especial-Comentarios
Abrimos el menú contextual (botón derecho del mouse) y con Eliminar Comentario, quitamos todos los comentarios de una vez.
2 – Constantes/Celdas con fórmulas
En este ejemplo, Ir a Especial-Celdas con fórmulas-Errores, nos permite seleccionar todas las celdas del rango con resultado #N/A. Luego podemos reemplazar el valor de estas celdas con otro (vacío, cero, etc.) de una vez usando Ctrl+Enter.
3 –Diferencias entre filas/Diferencias entre columnas.
Estos comandos nos permiten seleccionar todas las celdas de una columna/fila cuyos valores son distintos de los de las celdas de referencia. La celda de referencia es la ceda activa del rango seleccionado. Veamos estos ejemplos aplicado al rango A1:C3
Después de seleccionar, la celda activa es A1, aplicamos Ir a Especial-Diferencias entre filas
En la fila 1 la celda seleccionada es B1, la única que contiene un valor distinto a la celda de referencia (A1).
En la fila 2 la celda de referencia es A2 y por lo tanto la celda seleccionada es C2.
En la fila 3 las celdas seleccionadas con B3 y C3, que contienen valores distintos a A3.
De la misma manera funciona Diferencias entre columnas
Al principio de la nota vimos como seleccionar todas las celdas en blanco en un rango. Con estos comandos podemos hacer lo opuesto, seleccionar todas las celdas no en blanco del rango. El truco consiste en que la celda de referencia este en blanco. Por ejemplo podemos agregar una fila y una columna en blanco al rango y usar Diferencias entre filas
miércoles, marzo 17, 2010
Suma interna de los dígitos de un número con Excel
Parece ser que la onda mística que barre el mundo en los últimos años ha llegado también a algunos de mis amigos.
A uno de ellos se le ha dado por la numerología, que según Wikipedia viene a ser algo así como
una práctica adivinatoria utilizando los números. Es un conjunto de creencias o tradiciones que pretende establecer una relación mística entre los números, los seres vivos y las fuerzas físicas o espirituales.
Mi amigo quería desarrollar un modelo en Excel que le ayudara a hacer los cálculos necesarios según la doctrina adivinatoria. Básicamente los siguientes:
Puesto en términos de Excel si a la letra A le corresponde el número 1 y a la letra N el 14, el nombre Ana equivale a 1 +14 = 15 y a su vez 1 + 5 = 6.
El desafío es hacerlo sin macros, por supuesto. Para realizar la suma interna de los dígitos de un número podemos usar esta fórmula
=SUMAPRODUCTO(EXTRAE(A2,FILA(INDIRECTO("1:" & LARGO(A2))),1)*1)
Vamos a explicar esta fórmula por pasos:
=FILA(INDIRECTO("1:" & LARGO(A2))) crea una vector vertical con una serie de número que empieza en 1 y termina en el número que coincide con el largo del número cuyos dígitos queremos sumar. En nuestro ejemplo el resultado es FILA(1:5) es decir el vector {1,2,3,4,5}
EXTRAE(A2,FILA(INDIRECTO("1:" & LARGO(A2))),1) equivale a EXTRAE(A2, {1,2,3,4,5},1), es decir, extraemos el primer dígito, luego el segundo y así sucesivamente hasta el quinto. Recordemos que SUMAPRODUCTO es una función matricial.
Finalmente SUMAPRODUCTO multiplica cada miembro del vector creado con EXTRAE por 1 y los suma, dando el resultado, 15. Esta multiplicación es necesaria ya que la función EXTRAE da como resultado textos, no valores numéricos.
Para reducir el resultado de dos dígitos a una única cifra tenemos que volver a aplicar la fórmula. Esto puede hacerse en otra celda
o anidando las funciones
Si el resultado del primer cálculo diera un número de tres cifras, la fórmula anidada sería demasiado larga. Por lo tanto dividir el cálculo en varias celdas parece ser la mejor solución.
A uno de ellos se le ha dado por la numerología, que según Wikipedia viene a ser algo así como
una práctica adivinatoria utilizando los números. Es un conjunto de creencias o tradiciones que pretende establecer una relación mística entre los números, los seres vivos y las fuerzas físicas o espirituales.
Mi amigo quería desarrollar un modelo en Excel que le ayudara a hacer los cálculos necesarios según la doctrina adivinatoria. Básicamente los siguientes:
- Dado que a cada letra del alfabeto le corresponde un número, debemos sumar los valores de las letras del nombre (propio y apellido por separado) y totalizarlo reduciéndolo a un número de una sola cifra
- Dada la fecha de nacimiento, sumar los dígitos que la componen y totalizarlos tal como hicimos con el nombre.
Puesto en términos de Excel si a la letra A le corresponde el número 1 y a la letra N el 14, el nombre Ana equivale a 1 +14 = 15 y a su vez 1 + 5 = 6.
El desafío es hacerlo sin macros, por supuesto. Para realizar la suma interna de los dígitos de un número podemos usar esta fórmula
=SUMAPRODUCTO(EXTRAE(A2,FILA(INDIRECTO("1:" & LARGO(A2))),1)*1)
Vamos a explicar esta fórmula por pasos:
=FILA(INDIRECTO("1:" & LARGO(A2))) crea una vector vertical con una serie de número que empieza en 1 y termina en el número que coincide con el largo del número cuyos dígitos queremos sumar. En nuestro ejemplo el resultado es FILA(1:5) es decir el vector {1,2,3,4,5}
EXTRAE(A2,FILA(INDIRECTO("1:" & LARGO(A2))),1) equivale a EXTRAE(A2, {1,2,3,4,5},1), es decir, extraemos el primer dígito, luego el segundo y así sucesivamente hasta el quinto. Recordemos que SUMAPRODUCTO es una función matricial.
Finalmente SUMAPRODUCTO multiplica cada miembro del vector creado con EXTRAE por 1 y los suma, dando el resultado, 15. Esta multiplicación es necesaria ya que la función EXTRAE da como resultado textos, no valores numéricos.
Actualización: una solución más eficiente puede leerse en esta nota.
Para aplicar esta fórmula a letras, debemos primero convertirlas a sus equivalentes numéricos. Suponiendo que el número equivalente sea el número de orden en el alfabeto, podemos construir esta lista
Incluir el rango en un nombre ("alfabeto") y usar BUSCARV para calcular el valor de cada letra.
Por comodidad y para no complicar las fórmulas vamos a dividir el nombre en varias celdas poniendo cada letra en celda contiguas. Creamos una tabla de dos columnas por 20 filas; en la primer columna ponemos las letras del nombre y en la segunda columna calculamos el valor numérico de la letra con BUSCARV
Para ocultar los resultados #N/A y los bordes donde no hay letras usamos formato condicional
Para sumar los valores de cada letra usamos la fórmula matricial
={SUMA(SI(ESERROR(C2:C21),0,C2:C21))}
Y en las celdas G2 y F2 usamos las fórmulas con la función SUMAPRODUCTO que mostramos más arriba.
Finalmente podemos ocultar las columnas G y H y mostrar el resultado final
Así nos enteramos que Jorge vale 3, sobre cuyo significado no tengo la más pálida idea.
Incluir el rango en un nombre ("alfabeto") y usar BUSCARV para calcular el valor de cada letra.
Por comodidad y para no complicar las fórmulas vamos a dividir el nombre en varias celdas poniendo cada letra en celda contiguas. Creamos una tabla de dos columnas por 20 filas; en la primer columna ponemos las letras del nombre y en la segunda columna calculamos el valor numérico de la letra con BUSCARV
Para ocultar los resultados #N/A y los bordes donde no hay letras usamos formato condicional
Para sumar los valores de cada letra usamos la fórmula matricial
={SUMA(SI(ESERROR(C2:C21),0,C2:C21))}
Y en las celdas G2 y F2 usamos las fórmulas con la función SUMAPRODUCTO que mostramos más arriba.
Finalmente podemos ocultar las columnas G y H y mostrar el resultado final
Así nos enteramos que Jorge vale 3, sobre cuyo significado no tengo la más pálida idea.
lunes, marzo 08, 2010
Imprimir páginas pares e impares en Excel
En estos tiempos que corren donde tiene que ser verde, es curioso que Excel no ofrezca la posibilidad de imprimir páginas pares o impares como existe en Word. Esta funcionalidad nos permite ahorrar papel imprimiendo en ambas caras de las hojas.
Podemos superar esta carencia con esta macro que Ron de Bruin publica en su página, quien a su vez cita a Gord Dibben
Sub Print_Odd_Even()
Dim Totalpages As Long
Dim StartPage As Long
Dim Page As Integer
On Error GoTo errHandler
StartPage = 1 '1 = Odd and 2 = Even
StartPage = InputBox("Ingrese 1 para impares, 2 para pares")
Totalpages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
For Page = StartPage To Totalpages Step 2
ActiveSheet.PrintOut from:=Page, To:=Page, _
Copies:=1, Collate:=True
Next
Exit Sub
errHandler:
Exit Sub
End Sub
El mejor lugar para guardar esta macro es el cuaderno de macros Personal de manera que la macro siempre esté disponible. También podemos crear un icono o un atajo de teclado para lanzar la macro con facilidad.
El corazón de esta macro es la macrofunción XLM GET.DOCUMENT(50), así que agregaremos algunas palabras sobre el tema.
Como ya he publicado en el pasado las funciones macro del lenguaje XLM, que fue usado hasta la versión 5 de Excel, siguen vigentes por motivos de compatibilidad. Estas funciones nos permiten hacer tareas como por ejemplo determinar cuántas páginas a imprimir hay en un cuaderno de Excel.
Podemos superar esta carencia con esta macro que Ron de Bruin publica en su página, quien a su vez cita a Gord Dibben
Sub Print_Odd_Even()
Dim Totalpages As Long
Dim StartPage As Long
Dim Page As Integer
On Error GoTo errHandler
StartPage = 1 '1 = Odd and 2 = Even
StartPage = InputBox("Ingrese 1 para impares, 2 para pares")
Totalpages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
For Page = StartPage To Totalpages Step 2
ActiveSheet.PrintOut from:=Page, To:=Page, _
Copies:=1, Collate:=True
Next
Exit Sub
errHandler:
Exit Sub
End Sub
El mejor lugar para guardar esta macro es el cuaderno de macros Personal de manera que la macro siempre esté disponible. También podemos crear un icono o un atajo de teclado para lanzar la macro con facilidad.
El corazón de esta macro es la macrofunción XLM GET.DOCUMENT(50), así que agregaremos algunas palabras sobre el tema.
Como ya he publicado en el pasado las funciones macro del lenguaje XLM, que fue usado hasta la versión 5 de Excel, siguen vigentes por motivos de compatibilidad. Estas funciones nos permiten hacer tareas como por ejemplo determinar cuántas páginas a imprimir hay en un cuaderno de Excel.
domingo, febrero 21, 2010
Estilo de referencia F1C1 en Excel
Pregunta: ¿Qué hay de particular en esta imagen?
Efectivamente, las referencias a las columnas son números en lugar de letras. Cuando abrimos una instancia de Excel, la referencia a las columnas son, por defecto, letras. Pero Excel tiene otro sistema de referencia a las celdas conocido como "estilo F1C1" (o estilo R1C1 donde R significa row, fila en inglés, y C obviamente columna).
Cuando usamos el estilo F1C1, las direcciones de las celdas son expresadas sólo con números. A diferencia del estilo "normal", nos referimos primero a la fila y luego a la columna. De esta manera la referencia a la celda superior izquierda de la hoja en lugar de A1 será F1C1.
Para pasar de un estilo de referencia al otro en Excel Clásico usamos el menú Herramientas-Opciones y en la pestaña General marcamos la opción Estilo de referencia F1C1
En Excel 2007 apretamos el botón del Office y en Opciones de Excel pulsamos Fórmulas y marcamos la el Estilo de Referencia F1C1
Vamos a profundizar un poco más en el tema y trataremos de responder a lo que seguramente se pregunta más de un lector: ¿para qué sirve esto?
Al igual que en el estilo normal, existen referencias absolutas, relativas y mixtas. Por ejemplo, la fórmula =F1C1+F2C1 se refiere siempre a la celdas A1 yA2, no importe donde copiemos o pongamos la fórmula. Es decir, esta notación es absoluta, el equivalente a =$A$1+$A$2.
Si queremos usar referencias relativas usamos corchetes o paréntesis, dependiendo de las definiciones regionales, de esta manera
=F[1]C[1]+F[2]C[1]
o =F(1)C(1)+F(2)C(1).
A esta altura de los acontecimientos es importante distinguir qué significa referencia relativa en este caso.
=F(1)C(1)+F(2)C(1) significa: tomemos el valor de la celda que se encuentra una fila hacia debajo de la celda activa y una columna a la derecha y sumemos este valor al de la celda que se encuentra dos filas hacia abajo y una columna a la derecha.
Tomemos como ejemplo esta tabla
Los valores de la columna D son calculados con la fórmula =C2*B2 que hemos copiado al resto de las celdas en la columna. En forma automática Excel cambia la referencia cambiando la letra y el número de referencia
Veamos ahora que pasa si usamos el estilo de referencia F1C1
Todas las fórmulas son idénticas: =FC(-1)*FC(-2)
Como podemos apreciar, se trata de dos métodos distintos de referenciar celdas en la hoja. La referencia nn el método normal, aún cuando nos referimos específicamente a la celda A1, por ejemplo, es relativa. Si la usamos en una fórmula y copiamos esta fórmula a otra ubicación en la hoja, la referencia cambiará de en relación a la nueva ubicación.
En cambio, cuando usamos F1C1, no importa donde copiemos la fórmula siempre nos estaremos refiriendo a la primer celda de la hoja.
¿Por qué existen ambos métodos en Excel? No sé si Microsoft se ha expedido sobre el tema en alguna oportunidad pera parece ser que los motivos son históricos. La primer hoja de cálculo comercial, VisiCalc usaba el sistema de referencia A1. Lotus, la más popular de las hojas en los años 80 y principios del 90 también usaba este sistema. El primer producto de Microsoft en esta área fue el Microsoft Multiplan que usaba el sistema F1C1. Aparentemente, al crear Excel Microsoft decidió dar la batalla por el mercado y adoptó el mismo sistema de Lotus, que en esos tiempos dominaba el mercado.
Y ahora llegamos al núcleo de la cuestión: ¿para qué sirve este método? O la pregunta equivalente, ¿por qué tengo que saber que existe?
Respuestas posibles son:
Efectivamente, las referencias a las columnas son números en lugar de letras. Cuando abrimos una instancia de Excel, la referencia a las columnas son, por defecto, letras. Pero Excel tiene otro sistema de referencia a las celdas conocido como "estilo F1C1" (o estilo R1C1 donde R significa row, fila en inglés, y C obviamente columna).
Cuando usamos el estilo F1C1, las direcciones de las celdas son expresadas sólo con números. A diferencia del estilo "normal", nos referimos primero a la fila y luego a la columna. De esta manera la referencia a la celda superior izquierda de la hoja en lugar de A1 será F1C1.
Para pasar de un estilo de referencia al otro en Excel Clásico usamos el menú Herramientas-Opciones y en la pestaña General marcamos la opción Estilo de referencia F1C1
En Excel 2007 apretamos el botón del Office y en Opciones de Excel pulsamos Fórmulas y marcamos la el Estilo de Referencia F1C1
Vamos a profundizar un poco más en el tema y trataremos de responder a lo que seguramente se pregunta más de un lector: ¿para qué sirve esto?
Al igual que en el estilo normal, existen referencias absolutas, relativas y mixtas. Por ejemplo, la fórmula =F1C1+F2C1 se refiere siempre a la celdas A1 yA2, no importe donde copiemos o pongamos la fórmula. Es decir, esta notación es absoluta, el equivalente a =$A$1+$A$2.
Si queremos usar referencias relativas usamos corchetes o paréntesis, dependiendo de las definiciones regionales, de esta manera
=F[1]C[1]+F[2]C[1]
o =F(1)C(1)+F(2)C(1).
A esta altura de los acontecimientos es importante distinguir qué significa referencia relativa en este caso.
=F(1)C(1)+F(2)C(1) significa: tomemos el valor de la celda que se encuentra una fila hacia debajo de la celda activa y una columna a la derecha y sumemos este valor al de la celda que se encuentra dos filas hacia abajo y una columna a la derecha.
Tomemos como ejemplo esta tabla
Los valores de la columna D son calculados con la fórmula =C2*B2 que hemos copiado al resto de las celdas en la columna. En forma automática Excel cambia la referencia cambiando la letra y el número de referencia
Veamos ahora que pasa si usamos el estilo de referencia F1C1
Todas las fórmulas son idénticas: =FC(-1)*FC(-2)
Como podemos apreciar, se trata de dos métodos distintos de referenciar celdas en la hoja. La referencia nn el método normal, aún cuando nos referimos específicamente a la celda A1, por ejemplo, es relativa. Si la usamos en una fórmula y copiamos esta fórmula a otra ubicación en la hoja, la referencia cambiará de en relación a la nueva ubicación.
En cambio, cuando usamos F1C1, no importa donde copiemos la fórmula siempre nos estaremos refiriendo a la primer celda de la hoja.
¿Por qué existen ambos métodos en Excel? No sé si Microsoft se ha expedido sobre el tema en alguna oportunidad pera parece ser que los motivos son históricos. La primer hoja de cálculo comercial, VisiCalc usaba el sistema de referencia A1. Lotus, la más popular de las hojas en los años 80 y principios del 90 también usaba este sistema. El primer producto de Microsoft en esta área fue el Microsoft Multiplan que usaba el sistema F1C1. Aparentemente, al crear Excel Microsoft decidió dar la batalla por el mercado y adoptó el mismo sistema de Lotus, que en esos tiempos dominaba el mercado.
Y ahora llegamos al núcleo de la cuestión: ¿para qué sirve este método? O la pregunta equivalente, ¿por qué tengo que saber que existe?
Respuestas posibles son:
- Para poder demostrar nuestros profundos conocimientos sobre Excel e impresionar a nuestro jefe (o a su secretaria, o a la nueva empleada del departamento de contaduría).
- Para entender por qué cuando grabamos una macro vemos esto en el módulo del editor
- Porque según dicen, en algunos casos es mejor usar este método. Debo confesar que hasta el día de hoy no me he visto en una situación donde imprescindiblemente tenga que usar este método. Pero nunca se sabe…
Suscribirse a:
Entradas (Atom)