Acabo de recibir la Taza Oficial del Gurú Excel, de parte de MrExcel.com:
Esto me convierte oficialmente en un auténtico gurú del Excel.
El único detalle es que me costó 13 dólares (mas envío).
Si desean adquirir una (entre algunos otros artículos alusivos a Excel), clic aquí.
Nuevo gurú Excel
Ordenar con más de tres criterios
En alguna ocasión escuché a alguien decir que quería ordenar una lista de datos considerando cinco criterios de ordenación. Recuerdo también que alguien comentó que eso era imposible, ya que el comando Datos - Ordenar solo admitía tres entradas como criterio:
Efectivamente, Ordenar solo acepta tres criterios de ordenación. No hay una forma directa de especificarle a Excel un número mayor de criterios. Aún así, podemos ordenar una lista con cualquier número de criterios. Solo tenemos que dar un par de pasos extras.
Primeramente jerarquizamos nuestros criterios del más al menos importante. Después tomamos los tres menos importantes y los establecemos como criterios 1, 2 y 3. Explico: supongamos que queremos ordenar una lista con cinco criterios: ciudad, fecha de ingreso, sueldo, cuota y nombre, en ese orden de importancia. Entonces damos Datos - Ordenar y establecemos el criterio sueldo como primer criterio, cuota como segundo criterio y nombre como tercer criterio.
Damos Aceptar.Ahora, como ya tenemos los datos ordenados por los últimos tres criterios, simplemente volvemos a ir a Datos - Ordenar y ordenamos la lista por los primeros dos criterios.
Eso es todo. La lista estará ordenada siguiendo los cinco criterios solicitados. Recordemos aquí que si Excel encuentra varios registros que cumplen con los criterios establecidos, los presentará en el mismo orden en el que estaban en la lista original. En nuestro caso, cuando ejecutamos Ordenar por segunda vez, la lista "original" ya cumplía con los últimos tres criterios.Tal como comenté en la presentación de este blog, Excel es el programa más potente del mundo, pero no hace milagros. Habrá ocasiones en que tendremos que echarle una mano.
Arte en Excel
Hemos sabido de expresiones artísticas inverosímiles. Entre ellas está el realizar obras de arte utilizando Excel, como esta persona:
Una muestra más de la increíble flexibilidad que nos proporciona Excel.
Otra muestra, que pudiera no catalogarse como arte, pero que es tanto o más sorprendente:
Reconozco el tiempo que han invertido estas personas en sus obras, aunque no obstante, no recomendaría utilizar Excel como herramienta de dibujo. Hay infinidad de programas de dibujo (como Corel Draw), con los se obtienen mucho mejores resultados, y en menos tiempo. Con tantísimos trazos, ha sido una suerte que no se dañara el archivo.
Sumar por colores
Un usaurio me pregunta si es posible sumar los valores de celdas que tengan determinado color.
En Excel 2007 sí es posible, pero el usuario tiene la versión 2003.
En Excel 2003 la única forma es a través de una función personalizada, como la siguiente:
Function SUMARCOLOR(RangoColor As Range, CeldaColor As Range) As Long
Dim rngCelda As Range
'revisamos cada celda del rango
For Each rngCelda In RangoColor
'si los colores coinciden, sumar el valor de la celda al resultado previo
If rngCelda.Interior.ColorIndex = CeldaColor.Interior.ColorIndex Then
SUMARCOLOR = SUMARCOLOR + rngCelda.Value
End If
Next
End Function
Como vemos, no es un código muy complejo que digamos. Simplemete comparamos cada celda del rango contra el color del segundo argumento y, si coinciden, lo vamos sumando al resultado de la función.
Para utilizarla, utilizamos el asistente para funciones, buscamos la función en la categoría Definidas por el usuario, y especificamos los argumentos, quedando una fórmula similar a:
=SUMARCOLOR(A2:I20, K2)
Aunque por otra parte, lo mejor hubiera sido establecer alguna condición para los colores, y después sumar los valores usando esta condición, así como utilizar esta misma condición en un formato condicional para obtener el color en las celdas. Hacerlo hubiera llevado menos tiempo que el estar coloreando cada una de las celdas.
Tipos de errores
Al estar depurando alguna fórmula, es posible que obtengamos un resultado de error, un valor que comienza con un signo #. Esto no siempre es malo (de hecho, puede ser un resultado correcto). Si sabemos interpretar el error, podremos corregirlo fácilmente. Téngase en cuenta que para deshacerse del error puede ser necesario modificar ya sea la fórmula misma, o bien alguna de las celdas a las que hace referencia la fórmula.
En Excel existen siete resultados de error:
#N/A
#REF!
#NUM!
#NOMBRE?
#DIV/0!
#VALOR!
#NULO!
Veamos que significa cada uno de ellos. De esta manera, podremos depurarlo y corregirlo fácilmente.
#N/A
Este error se produce cuando una fórmula de búsqueda o referencia no encuentra ninguna coincidencia exacta en la correspondiente matriz de búsqueda. Significa que el valor buscado no existe en la matriz de búsqueda.
#REF!
Este tipo de error surge cuando tenemos una referencia de celda inválida en la fórmula. Por ejemplo, en la fórmula: =BUSCARV("mi_string",A2:B8,3,FALSO), obtenemos #REF! ya que no podemos buscar en la tercera columna de una matriz que solo tiene dos columnas. En esta otra:
DESREF(Hoja1!A1, -1,0,1,1) también obtenemos #REF! ya que no hay ninguna fila encima de la celda A1. Siguiendo con esta fórmula, si eliminamos la primera fila de la hoja "Hoja1", o si eliminamos la Hoja1, la fórmula mostrará #REF!, ya que se ha "perdido" la referencia a la celda Hoja1!A1.
#NUMERO!
Este se produce cuando ingresamos algún valor no numérico como un argumento de función que Excel espera que sea argumento numérico (o una referencia a un valor numérico). Otra posibilidad es ingresar un número inválido, como uno negativo cuando se espera uno positivo, o un 2 cuando el argumento solo admite 0 ó 1. La fórmula =COINCIDIR(123, B1:B10,3) devuelve #NUM!, ya que el último argumento de COINCIDIR solo puede ser -1, 0 ó 1.
#NOMBRE!
Este error lo obtenemos cuando escribimos mal el nombre de alguna función. También puede surgir cuando utilizamos alguna función personalizada y tenemos deshabilitadas las macros o el complemento correspondiente. Otra situación que dispara este error es el escribir mal el nombre de algún rango nombrado. La fórmula =SUMARSI(A2:A10,"criterio",C2:C10) develve #NOMBRE! (¿Por qué?). Finalmente puede suceder también que no utilizamos comillas al ingresar un argumento de texto.
#DIV/0!
Este es fácil. Se produce al hacer una división por cero, o bién, por una referencia a un cero.
#VALOR!
Similar a #NUMERO!, lo obtenemos cuando el tipo de argumento solicitado por la función, es distinto al ingresado por el usuario. Por ejemplo, al ingresar un argumento lógico cuando la función requiere un rango, o un número cuando la función espera texto.
#NULO!
Este es muy poco frecuente. Una fórmula devolverá #NULO! cuando la celda de intersección de dos rangos, no existe. En Excel, el operador de intersección es un espacio en blanco. Por tanto, la fórmula =A2:D2 J1:J10, devuelve #NULO! ya que los rangos A2:D2 y J1:J10 no se intersectan en ningún punto. En cambio, =A2:D2 C1:C10 devuelve C2, celda común a ambos rangos.
A menudo sucede que una celda de error está correctamente escrita pero, al hacer referencia a un resultado de error, refleja este resultado. Para saber cuál es la celda exacta que está generando el error, podemos ejecutar (previa selección de la celda con error) Herramientas - Auditoría de fórmulas - Rastrear error. Excel señalará con una línea roja la celda que está produciendo el error.
Otro error común es cuando la celda aparece llena de símbolos #. Esto se debe a que la celda no es lo suficientemente ancha para mostrar el resultado o bien, cuando contiene una fecha inválida.
Obtener los elementos únicos de una lista
Una tarea común es obtener los elementos únicos de una lista. La siguiente macro permite realizarlo:
Dim celda As Range
Dim unicos As Collection
Dim sh As Worksheet
Dim i As Long
'nos aseguramos que la seleccion sea un rango
If TypeName(Selection) = "Range" Then
'inicializamos la coleccion
Set colUnique = New Collection
'loop en todas las celdas y agregarlas a la coleccion
For Each celda In Selection.Cells
'si el elemento existe, se genera un error, ignorarlo
On Error Resume Next
'una coleccion solo agrega elementos no repetidos
unicos.Add celda.Value, CStr(celda.Value)
On Error GoTo 0
Next celda
'agregar hoja para la lista
Set sh = ActiveWorkbook.Worksheets.Add
'escribir los datos unicos
For i = 1 To unicos.Count
sh.Range("A1").Offset(i, 0).Value = unicos(i)
Next i
'ordenar
sh.Range(sh.Range("A2"), sh.Range("A2").End(xlDown)) _
.Sort sh.Range("A2"), xlAscending, , , , , , xlNo
End If
End Sub
Otras alternativas son generar una tabla dinámica y agregar el campo correspondiente al área de filas, o bién, utilizar el filtro avanzado. El análisis que hagamos del modelo nos dirá cuál método es el mejor.
La entrevista en español
Como lo prometido es deuda, les presento en español la entrevista que el Excel MVP Charley Kyd le concedió al sr. Chandoo en su blog.
-¿Cuáles son tus tres fórmulas favoritas?
-No tengo fórmulas favoritas, pero hay tres funciones que utilizo todo el tiempo:
INDICE
COINCIDIR (con el tercer argumento igual a cero)
SUMAPRODUCTO
-Si soy un principiante en Excel, qué libros o recursos me recomendarías?
-El foro de Mr. Excel.com para hacer preguntas. También los grupos de discusión de Microsoft y el grupo de noticias microsoft.public.excel para preguntar.
-¿Cómo podrían los gerentes y analistas ser más productivos con Excel?
-No actualicen a Excel 2007. Y si lo hacen, mantener una copia de Excel 2003 en sus equipos. (Al instalar Excel 2007 sobre 2003, responder No cuando el programa de instalación pregunte si quieren actualizar a la nueva versión).
Donde sea posible, separar datos de presentaciones. Después, utilizar fórmulas para jalar los datos en la presentación. (Mis tres funciones favoritas te ayudarán a hacerlo).
Aprender métodos abreviados con el teclado. En las versiones anteriores a 2007, los comandos Alt... son consistentes. Y 2007 te permite utilizar las combinaciones Alt+tecla de las versiones anteriores.
-¿Qué recursos (libros, sitios web) recomiendas para este tipo de usuarios?
-Estaré hablando más sobre separación de datos y presentaciones en ExcelUser.com en el próximo año. Suscríbete a mi newsletter para estar al tanto de los nuevos desarrollos.
-Piensas que un microempresario puede administrar su negocio utilizando solo Excel y otros programas gratuitos?
-Sí y no. No recomendaría utilizar Excel para llevar la contabilidad. Quicken es muy barato y hace un mucho mejor trabajo. Pero Excel puede ayudar de muchas otras maneras, como en análisis de datos, presupuestos, cálculo de precios y más.
-¿En dónde crees tú que la mayoría de nosotros desperdiciamos más tiempo...?
...importando datos de otros sistemas/fuentes?
-Realizando la misma actividad analítica o de reporteo una y otra vez, pero con diferentes datos. Cuando te descubras haciendo esto, intenta buscar otro método en el que utilices fórmulas para jalar los datos que necesites de otro libro de datos. Así, podrás enfocar tu atención únicamente en la actualización de los datos, en lugar de comenzar de cero cada vez.
...en fórmulas y errores?
-Mucha gente no sabe cómo cambiar al Modo de cálculo manual. (Herramientas - Opciones - Calcular - Manual). Esto nos permite trabajar en libros extensos sin tener que esperar a que recalcule todo el tiempo. Después, cuando queramos calcular, simplemente presionamos F9. Mucha gente elabora hojas y libros mucho más grandes de lo que deberían, y entonces se pierden en ellos. Yo intento mantener mis libros y hojas reducidos, a menos que tenga una razón específica para no hacerlo.
Mucha gente crea demasiados vínculos entre libros. Esto es un problema porque los vínculos pueden dañar o dañarse, o generar errores de referencias circulares. Yo trato de vincular solo de mis datos a mi presentación.
Supongamos que tenemos una columna de datos en el rango A5:A10. Si queremos sumar estos datos, regularmente utilizamos la fórmula =SUMA(A5:A10). Yo en su lugar, formateo las celdas A4 y A11 con borde medio y relleno gris. Después sumo utilizando el rango A4:A11. Esto me permite agregar o eliminar filas entre los bordes grises sin tener que preocuparme por las fórmulas que hacen referencia a este rango. Mientras no toque las filas de límite grises, me siento seguro. (No utilizo este método si voy a imprimir las hojas para alguien más, porque luce mal. Pero esto no es problema la mayor parte del tiempo).
...aplicando formatos?
-Trato de no utilizar nunca el comando Combinar y centrar para centrar rótulos en varias columnas. (De hecho, dudo haber utilizado este comando más de media docena de veces *en mi vida*). En su lugar, utilizo Formato - Celdas - Alineación - Centrar en la selección. Esto proporciona el mismo efecto pero sin obligarme a lidiar con los contratiempos que generan las celdas combinadas.
...en VBA?
-VBA es muy potente, y puede ser muy divertido. Pero hay que tener cuidado, puede volverse una adicción. Muchos usuarios de VBA pasan muchas horas creando macros que les ahorran varios minutos de trabajo. Esto obviamente no es un buen uso de nuestro tiempo. Por otra parte, en lo personal trato fuertemente de comentar mi código detalladamente. Y cuando reviso código viejo, *siempre* deseo haberlo comentado con más detalle todavía . Cuando estás a mitad de un proyecto, la razón de cada línea de código parece obvia. Pero seis meses después, todo es un misterio. COMENTA TU CÓDIGO.
-¿Cuál es la mejor forma para un no programador de aprender y utilizar VBA en su trabajo cotidiano?
-Continúa con una versión anterior a 2007, por dos razones: no hay buenos libros acerca de macros 2007, y la grabadora de macros no funciona con muchas acciones en 2007.
Consigue un libro para principiantes y comienza a experimentar.
Utiliza la grabadora de macros y mira los resultados.
Haz preguntas en grupos de trabajo y foros.
Familiarízate con el Explorador de objetos. (En el VBE, presiona Ver - Explorador de objetos. O simplemente presiona F2).
