martes, 11 de junio de 2013

Fórmula para ordenar datos en Excel.
Excel nos permite ordenar la información rápidamente utilizando el comando Ordenar y filtrar, pero en ocasiones necesitamos una fórmula para ordenar datos en Excel y en esta ocasión te mostraré una alternativa para hacerlo.

Los datos que utilizaremos en nuestro ejemplo tienen una columna de texto y otra columna de números. En el primer ejemplo ordenaremos los datos por los datos numéricos y en el segundo ejemplo ordenaremos por los valores de texto.

Fórmula para ordenar datos numéricos
Para nuestro primer ejemplo haremos un ordenamiento descendente de la columna Calificación. La función que nos permitirá hacer esto de una manera sencilla será la función JERARQUIA.EQV la cual obtiene la posición de un número dentro de un rango. Es importante mencionar que esta función está disponible a partir de Excel 2010, para versiones anteriores debes utilizar la función JERARQUIA. Ahora considera la siguiente fórmula:
=JERARQUIA.EQV(B2,$B$2:$B$9)
Esta fórmula obtiene la posición del valor en B2 dentro del rango B2:B9 que para nuestro ejemplo será la posición 3, observa el resultado:

La columna Posición asigna el número 1 al valor más alto dentro del rango y a partir de ahí se enumeran todos los registros. Puedes ver que la posición 8 corresponde a la calificación 61 la cual es la más baja de todas las calificaciones. Ahora que ya tenemos las posiciones podemos ordenar los datos utilizando como referencia la columna posición y utilizando la Indicé la función COINCIDIR de la siguiente manera:
=INDICE ($A$2:$A$9, COINCIDIR (E2, $C$2:$C$9,0))
La función INDICE obtiene un valor dentro de un rango con solo especificar su fila. Con esta fórmula estamos buscando dentro del rango A2:A9 y la fila la obtenemos al hacer coincidir el número 1 de la columna E con el número 1 de la columna C (Posición) que para nuestro ejemplo es Roberto:
Al copiar la fórmula hacia abajo obtenemos automáticamente el nombre de cada alumno de acuerdo a su posición. Para obtener el dato de la calificación usamos una fórmula idéntica a la anterior con la diferencia de que la función INDICE hará la búsqueda sobre el rango B2:B9:

Función VBA para extraer números en Excel.
Si has leído con detenimiento las secciones anteriores encontrarás muy fácil entender el siguiente código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Function EXTRAENUM(cadena As String)

'Variable numeros contendrá solo números de la cadena
Dim numeros As String
numeros = ""

'Recorrer la cadena
For i = 1 To Len(cadena)
     
    'Evaluar SI el carácter actual es un número
    If IsNumeric(Mid(cadena, i, 1)) Then
         
        'Concatenar valor numérico a la variable numeros
        numeros = numeros & Mid(cadena, i, 1)
     
    End If
Next

'Devolver los números encontrados
EXTRAENUM = numeros

End Function


Utilizando esta nueva función podremos analizar el valor de una celda carácter por carácter y extraer todos los valores numéricos contenidos en ella. En la siguiente imagen puedes observar algunos ejemplos de uso de la función recién creada:
Es importante mencionar que el resultado de nuestra nueva función es una cadena de texto y por eso en la imagen anterior vemos el valor de las celdas de la columna B alineados a la izquierda. Si queremos convertir inmediatamente en número el resultado de la función EXTRAENUM, entonces podemos multiplicarlo por uno.
Puedes notar la diferencia con el resultado anterior porque en este caso los valores están alineados a la derecha indicando que Excel los ha reconocido como valores numéricos y están listos para realizar cualquier cálculo con ellos.
Macro para extraer números de una celda.

Algunas semanas atrás publiqué un artículo que utilizaba funciones para extraer números de una celda en Excel. Sin embargo, dicho método tiene ciertas restricciones como el hecho de extraer solo el primer bloque de números encontrado en la cadena.
Hoy haremos una macro para extraer todos los números de una celda sin importar su posición dentro de la cadena y para ello utilizaremos la función IsNumeric la cual nos permite saber si el carácter analizado es un valor numérico.
Función IsNumeric en VBA
La función IsNumeric tiene un funcionamiento muy sencillo ya que tiene un solo argumento y que es el valor que deseamos evaluar.

Como resultado obtendremos un valor verdadero (TRUE) en caso de que el argumento sea un valor numérico y un valor falso (FALSE) en caso contrario. Para nuestro ejemplo aplicaremos la función IsNumeric a cada carácter contenido en la celda.
Recorrer la cadena de texto
Para analizar cada carácter en una cadena de texto será necesario utilizar el bucle For Next y colocar como límite el número de caracteres de la cadena que podemos obtener fácilmente con la función Len.

La instrucción For Next realizará tantos ciclos como números de caracteres haya en la cadena y en cada ciclo la variable i aumentará de valor hasta alcanzar el número máximo de caracteres. Ahora que ya sabemos cómo recorrer la cadena de texto debemos extraer efectivamente cada uno de los caracteres utilizando la función Mid.
Función Mid en VBA.

La función Mid en VBA nos permite extraer una subcadena indicando su posición de inicio y la longitud. Esta función tiene 3 argumentos, el primero de ellos es la cadena original, el segundo la posición donde iniciará la extracción y el tercer argumento es la cantidad de caracteres a extraer.

Para nuestro ejemplo utilizaremos la función Mid para extraer un solo carácter a la vez por lo que estará dentro de nuestro bucle For Next explicado en la sección anterior. A continuación presento el código completo que nos ayudará a extraer números de una celda en Excel utilizando una macro.
Microsoft Excel.

Es una aplicación distribuida por Microsoft Office para hojas de cálculo. Este programa es desarrollado y distribuido por Microsoft, y es utilizado normalmente en tareas financieras y contables.

Historia de Microsoft Excel.
Microsoft comercializó originalmente un programa de hojas de cálculo llamado Multiplan en 1982, que fue muy popular en los sistemas CP/M, pero en los sistemas MS-DOS perdió popularidad frente al Lotus 1-2-3. Microsoft publicó la primera versión de Excel para Mac en 1985, y la primera versión de Windows (numeradas 2-05 en línea con el Mac y con un paquete de tiempo de ejecución de entorno de Windows) en noviembre de 1987. Lotus fue lenta al llevar 1-2-3 para Windows y esto ayudó a Microsoft a alcanzar la posición de los principales desarrolladores de software para hoja de cálculo de PC, superado al también muy popular1 Quattro Pro de Borland. Este logro solidificó a Microsoft como un competidor válido y mostró su futuro de desarrollo como desarrollador de software GUI. Microsoft impulsó su ventaja competitiva lanzando al mercado nuevas versiones de Excel, por lo general cada dos años. La versión actual para la plataforma Windows es Microsoft Excel 2013. La versión actual para Mac OS X es Microsoft Excel 2011.
La lista de versiones de Microsoft Excel que han sido lanzadas al mercado para Microsoft Windows son:
·         En el año 1987 Excel 2.0.
·         En el año 1990 Excel 3.0.
·         En el año 1992 Excel 4.0.
·         En el año 1993 Excel 5.0 (Office 4.2 & 4.3).
·         En el año 1995 Excel 7.0 (Office ‘95).
·         En el año 1997 Excel 8.0 (Office ‘97).
·         En el año 1999 Excel 9.0 (Office 2000).
·         En el año 2001 Excel 10.0 (Office XP).
Excel se convirtió en el objetivo de una demanda por otra empresa que ya tenía a la venta un paquete de software llamado "Excel" en el sector financiero ya que era un producto muy competitivo en el mercado. Como resultado de la controversia Microsoft estaba obligada a hacer referencia al programa como "Microsoft Excel" en todos sus comunicados de prensa oficiales y documentos jurídicos. Sin embargo, con el tiempo esta práctica ha sido ignorada, y Microsoft aclaró definitivamente la cuestión cuando se adquirió la marca del otro programa. Microsoft también alentó el uso de las letras XL como abreviatura para el programa; el icono del programa en Windows todavía consiste en una estilizada combinación de las dos letras, y la extensión de archivo por defecto del formato Excel puede ser .xls en versiones anteriores o iguales a Excel 2003 (11.0), .xlsx para libros de Excel regulares en versiones posteriores o iguales a Excel 2007 (12.0), .xlsm para libros de Excel preparados para macros en versiones posteriores o iguales a Excel 2007 (12.0) o .xlsb para libros de Excel binarios en versiones posteriores o iguales a Excel 2007 (12.0).
Excel ofrece una interfaz de usuario ajustada a las principales características de las hojas de cálculo, en esencia manteniendo ciertas premisas que pueden encontrarse en la hoja de cálculo original, VisiCalc: el programa muestra las celdas organizadas en filas y columnas, y cada celda contiene datos o una fórmula, con referencias relativas ,absolutas o mixtas a otras celdas.