Excel función extrae
Transcript of Excel función extrae
Partes de una fechaLas funciones DIA, DIASEM, MES y AÑO nos ayudan a obtener una parte de la fecha que se especifica como argumento. Todas estas funciones se encuentran dentro del grupo de funciones de fecha y hora.
La función DIA
Esta función obtiene el número de día especificado en una fecha. El dato regresado es siempre un número entre 1 y 31. Por ejemplo, observa el resultado al introducir la siguiente fórmula:
La función DIA despliega precisamente el número 5 que es el día del mes especificado en la fecha.
La función DIASEM
En ocasiones deseamos saber el día de la semana a la que se refiere una fecha específica. Por ejemplo, utilizando la misma fecha del ejemplo anterior utilizando la función DIA.SEM obtenemos el siguiente resultado:
La función regresa el valor 4 porque es el valor entero que representa al día miércoles ya que de manera predeterminada Excel toma al domingo como el primer día de la semana y al sábado asigna el número 7.
La función MES
Para obtener el número de mes especificado en una fecha utilizamos la función MES. La función siempre regresará un valor entre 1 y 12.
La función AÑO
Finalmente tenemos la función AÑO la cual obtiene el año de la fecha especificada.
Al trabajar con años en Excel debes tener cuidado ya que siempre que quieras hacer referencia a un año del sigo XXI debes especificar los 4 dígitos, de lo contrario recibirás un número que seguramente no esperabas. Observa el siguiente ejemplo donde en lugar de especificar el año “2011” he especificado solamente “11”:
El trabajo con fechas es muy importante en Excel y debes conocer las funciones adecuadas que te ayudarán a trabajar con este tipo de datos.
XXXXXXXXXXXXX
El formato 20130505 no es un formato de fecha válido. Te recomiendo hacer primero la conversión a un formato de fecha válido y posteriormente hacer la comparación. La conversión la puedes hacer con la siguiente fórmula:=FECHANUMERO(DERECHA(A1,2) & “/” & EXTRAE(A1,5,2) & “/” & IZQUIERDA(A1,4))
XXXXXXXXXXXXX
En algunas ocasiones nos hemos topado con la necesidad de hacer la extracción de un
grupo de caracteres dentro de una celda ya que requerimos solo una parte de ellos,
existen diversas maneras de hacerlo no obstante en Excel existe una función que te
permite realizar este trabajo sin inconvenientes, ya que con la función EXTRAE tienes la
posibilidad de hacer la extracción de un conjunto de caracteres ya sean texto, símbolos,
valores o números.
A continuación se explica en detalle la función de Excel EXTRAE.
La función EXTRAE devuelve un número específico de caracteres de una cadena de texto,
comenzando en la posición que especifiques y en función del número de caracteres que
especifiques.
La función EXTRAE se utiliza con idiomas que emplean un conjunto de caracteres de un
byte (SBCS).
(SBCS) Single Byte Character Set: se utiliza para referirse a conjuntos de caracteres que
utilizan exactamente un byte por cada carácter gráfico.
La función EXTRAE siempre cuenta cada carácter como 1, ya sea de un byte o de doble
byte e independientemente de la configuración predeterminada de idioma.
La función EXTRAE la podemos hallar dentro de las funciones de Texto como se aprecia
en la imagen:
En la siguiente imagen se puede apreciar la sintaxis de esta función:
Texto: Cadena de texto que contiene los caracteres que se desea extraer.
Posición_inicial: Posición del primer carácter que se desea extraer del texto. La
Posición_inicial del primer carácter de texto es 1, y así sucesivamente.
Núm_de_caracteres: Específica el número de caracteres que se desea que EXTRAE
devuelva del argumento texto.
A considerar:
Si posición_inicial es mayor que la longitud de texto, EXTRAE devuelve “” (texto
vacío).
Si posición_inicial es menor que la longitud de texto, pero posición_inicial más
núm_de_caracteres excede la longitud de texto, EXTRAE devuelve los caracteres hasta el
final de texto.
Si posición_inicial es menor que 1, EXTRAE devuelve el valor de error #¡VALOR!
Si núm_de_caracteres es negativo, EXTRAE devuelve el valor de error #¡VALOR!
¡En Practica!
Veamos a continuación un ejemplo para comprender mejor esta función:
Existe un una tienda por departamentos en la cual se necesita realizar una organización de
los datos de tal manera que este asociado un código con un departamento en especifico,
sin embargo los códigos que se tienen están con caracteres adicionales que no se
requieren, por lo tanto se necesita hacer la extracción del código antes para que sea
combinado con el nombre del departamento.
En la imagen anexa se encuentra el ejemplo propuesto:
¿Cómo lo vamos a realizar?
Vamos a emplear inicialmente la función EXTRAE y luego vamos a emplear la función de
Texto CONCATENAR para hacer la combinación del departamento con el código, veamos
en la imagen anexa la solución a este ejemplo:
Como se puede apreciar la combinación de ambas funciones (Formula) soluciono el
ejercicio propuesto ya que con el uso de la función EXTRAE y CONCATENAR se obtiene
el dato requerido.
El uso de la función EXTRAE simplifica el trabajo en alto grado ya que optimizamos el
tiempo que normalmente invertimos en los procedimientos manuales y además que puede
ser anidada con una gran diversidad de funciones con lo que se crean formulas nuevas
para solucionar problemas más complejos.
XXXXXXXXX
Tutorial Excel: Cómo crear una lista desplegable múltiple Posted On 23/11/2010 In Tips, Tutoriales Excel
En muchas ocasiones nos encontramos trabajando con múltiples listas desplegables en
una misma hoja de cálculo que ocupan un espacio que podríamos aprovechar para otros
fines; en nuestra experiencia este suele ser un molesto inconveniente cuando se trata de
diseñar paneles de control, balanced scorecards o dashboards desde Excel con controles
de interactividad que permitan explorar múltiples fuentes de datos, instrumentos en donde
por premisas de diseño debemos aprovechar al máximo cada espacio disponible, dándole
siempre el mejor uso posible.
Afortunadamente de una forma muy sencilla podemos forzar que una lista desplegable
cambie automáticamente a partir de nuestra selección en una combinación de botones de
opción (también disponibles en los Controles de Formulario), los cuales ocupan
considerablemente menos espacio. En este tutorial detallaremos como hacerlo partiendo
de tres sencillos pasos a seguir:
1. Preparar nuestra hoja de cálculo.
2. Insertar y configurar nuestros botones de opción.
3. Insertar y configura nuestra lista desplegable múltiple.
El resultado final que obtendrán al aplicar nuestras instrucciones deberá ser muy similar al
de la imagen anexa:
Si les gusta el resultado, veamos entonces en detalle como hacer nuestra lista desplegable
múltiple en Excel.
¡En práctica!
Paso 1: Preparar nuestra hoja de cálculo.
Nuestro primer paso será preparar nuestra hoja de cálculo para los cambios que vamos a
realizar. Para este fin tan solo es necesario que seleccionemos tres celdas de nuestra
preferencia en donde alojaremos tres datos que serán de importancia para crear nuestra
lista desplegable múltiple en Excel:
Una celda para cargar los datos de selección de nuestro botón de opción
Una celda para cargar la dirección de referencia de los datos a mostrar en nuestra
lista desplegable múltiple.
Una celda para cargar los datos de la selección una vez que se comience a
interactuar con nuestra lista desplegable múltiple.
En nuestro caso seleccionamos las celdas D3 , D4 y D5 de nuestra hoja de cálculo,
trabajando con una tabla configurada de C7 a E19, tal como lo pueden apreciar en la
imagen anexa:
Para un manejo más sencillo de la formulación asignaremos un nombre a la celda en la
que cargaremos los datos que nos indican que botón de opción se encuentra
seleccionado. Para ello recuerda que solo debes acceder a la ficha Fórmulas,
sección Nombres definidos, icono Asignar nombre a un rango:
En el cuadro de diálogo que te aparecerá asignarás cual es el nombre que deseas asignar,
a que ámbito se refiere, un comentario entorno a para que serás empleado y a que celda
hace referencia. En nuestro caso se trata de la celda D3 y la llamamos “Boton“:
Para mayores detalles entorno a como asignar nombre a un rango de datos no dudes en
visitar este artículo dedicado al tema.
Paso 2: Insertar y configurar nuestros botones de opción.
Luego de configurar nuestra hoja de cálculo procederemos a insertar nuestros botones de
opción que emplearemos para configurar la lista desplegable múltiple. Para ello iremos a la
ficha Programador, sección Controles, botón Insertar:
Una vez allí seleccionaremos en la sección Controles de Formulario, el icono de Botón
de Opción, tal como lo pueden apreciar en la imagen anexa:
Insertaremos tantos botones de opción como categorías tenga nuestro cuadro de origen.
En nuestro caso insertaremos tres botones de opción, uno para la categoría “Días“, uno
para la categoría “Meses” y otro para la categoría “Empresas“. Luego podemos cambiar
los nombres de cada uno de nuestros botones de opción haciendo clic izquierdo sobre
cada uno de ellos y asignándole el nombre correspondiente.
Para configurar nuestros botones de opción mantendremos pulsada la tecla Control,
hacemos clic en cada uno de los botones de opción de forma que todos queden
seleccionados. Luego haremos clic sobre los mismos con el botón derecho del ratón y
seleccionamos la opción Formato de Control:
En la pestaña Control especificaremos a que celda queremos vincular nuestros controles.
En nuestro caso será con la celda D3, a la cual llamamos Boton. Si deseamos agregar un
efecto 3D a nuestro botones es posible también hacerlo desde esta ficha marcando la
opción
Paso 3: Insertar y configurar nuestra lista desplegable múltiple.
Como paso siguiente insertaremos nuestra lista desplegable. Para ello iremos nuevamente
a la ficha Programador, sección Controles, botón Insertar:
Una vez allí seleccionaremos en la sección Controles de Formulario, el icono de Cuadro
Combinado (controles de formulario), tal como lo pueden apreciar en la imagen anexa:
Una vez insertado nuestro cuadro combinado que emplearemos como lista desplegable
múltiple procederemos a emplear una fórmula que nos permitirá conocer cual lista de
datos debe ser mostrada de acuerdo a nuestra selección. Emplearemos para este fin la
función de MS Excel DIRECCION. En nuestro caso será cargada en la celda D4 de
nuestra hoja de cálculo, nuestra celda Dirección, haciendo referencia al rango de datos de
nuestra tabla (c7:E19):
=DIRECCION(8;Boton+2)&”:”&DIRECCION(19;Boton+2)
En el primer argumento de la primera función DIRECCION colocaremos un número que
será el resultado de sumarle 1 a el valor de referencia de la fila en que inicia nuestra tabla
para que el rango a asignar se encuentre justo por debajo del encabezado de la tabla (en
nuestro caso 7+1=8). En el primer argumento de la segunda función DIRECCION
colocaremos un número que será igual al valor de la fila en que finaliza nuestra tabla (en
nuestro caso 19).
El segundo argumento de ambas funciones DIRECION dependerá también de la ubicación
de nuestra tabla. Si inicia en la columna A no debemos sumarle nada a nuestra celda
botón pero en caso contrario debemos sumar uno por cada columna de separación que
este el inicio de nuestra tabla de la primera columna de nuestra hoja de cálculo (en nuestro
caso la tabla comienza en la columna C, por lo que sumamos 2: Boton+2)
Como resultado de aplicar esta fórmula obtendremos la dirección del grupo de celdas que
deben ser mostradas en nuestra lista desplegable múltiple de acuerdo a nuestra selección
en los botones de opción, en la imagen anexa resaltada en azul:
Nuestra siguiente acción será crear una referencia a esta Dirección que pueda interpretar
nuestra lista desplegable múltiple. Para ello debemos ir a la ficha Fórmulas,
sección Nombres definidos, icono Asignar nombre a un rango:
En el cuadro de diálogo que te aparecerá asignarás cual es el nombre que deseas asignar,
a que ámbito se refiere, un comentario entorno a para que serás empleado y a que celda
hace referencia. En nuestro caso asignamos como nombre “Direccion”. En el cuadro de
texto Se refiere a escribiremos lo siguiente y haremos clic en Aceptar:
=INDIRECTO($D$4)
Para finalizar haremos clic con el botón derecho del ratón en nuestro cuadro de diálogo
que añadimos anteriormente y seleccionaremos la opción Formato de Control. En la
pestaña Control escribiremos “Direccion” en el cuadro de texto Rango de Entrada,
vinculando con la celda $D$5 (nuestra celda Selección). Para finalizar haz clic en Aceptar.
Información Importante: Con el objeto de hacer más didáctico este tutorial
de cómo crear una lista desplegable múltiple en Excel, hemos empleado celdas de
referencia (D3, D4 y D5) que se encuentran a la vista de los usuarios. Recomendamos que
en sus propias configuraciones estas celdas no se encuentren a la vista de los usuarios
para evitar que puedan dañar sin desearlo la lista desplegable múltiple. Recuerden que
deben adaptar para ello toda la formulación empleada.
¡Hemos culminado!
Si han seguido los pasos detallados deberán obtener un resultado muy similar al anexo:
Dejamos a su disposición archivos de práctica para que puedan detallar como se
encuentran configurada nuestra lista desplegable múltiple en Excel:
Lista Desplegable Múltiple Formato Excel 2007
Lista Desplegable Múltiple Formato Excel 2003
Si te gustó este tutorial no dejes de visitar nuestra sección de Tutoriales Excel donde
podrás encontrar mucha más información de tu interés:
Sección de Artículos Tutoriales Excel
Como siempre no olviden que todo nuestro equipo se encuentra a su disposición para
atender sus comentarios, aportes o dudas entorno a este o cualquiera de nuestros
artículos.
¡Estamos para servirles!
Un abrazo, pronto estaremos nuevamente en contacto.
El Equipo EXCELLENTIAS.COM
XXXXXXXXXXXXX
Macros para proteger o desproteger una hoja Excel Posted On 20/10/2009 In Macros, Macros Excel
¿Deseas conocer cómo proteger o desproteger una hoja Excel a través de macros?
En este tutorial te explicaremos en tan solo cuatro pasos como crear una macro muy
simple que te permitirá proteger una hoja de Excel, y otra que te permitirá desprotegerla,
unas escasas líneas de código que puede resultarte de amplia utilidad en aquellos casos
donde requieres trabajar con macros mucho más grandes que deben intervenir sobre
hojas de cálculo protegidas con contraseña.
Paso 1: Activar la ficha Programador.
Los comandos que se usan para editar y ejecutar macros en Excel se encuentran en el
grupo Código de la ficha Programador, la cual de forma predeterminada se encuentra
oculta. Por ello nuestro primer paso de este tutorial para proteger o desproteger una hoja
Excel será abrir nuestro archivo y activar la ficha Programador. Recuerda que este paso
solo aplicará en caso de que no tengas activa esta ficha; si ya la tienes activa puedes ir
directamente al paso siguiente.
En Excel 2007 ubica la cinta de opciones de la barra de herramientas e ingresarás
en: Botón Inicio/ Opciones de Excel/ Más frecuentes/ y deberás seleccionar la opción
Mostrar ficha programador en la cinta de opciones. La imagen anexa te muestra cuál
es la opción a seleccionar para activar esta ficha:
Paso 2: Ingresar al editor de Visual Basic y crear un nuevo Módulo.
Nuestro segundo paso será ingresar al Editor de Visual Basic. Para ello en la ficha
Programador deberás ubicar el grupo Código el cual podrás identificar fácilmente por
encontrarse a la izquierda, con una apariencia como la de la imagen anexa:
Una vez ubiques el grupo código harás clic en el botón Visual Basic, el cuál te llevará al
Editor de Visual Basic. Cuando ingreses al editor ubicarás a la derecha de la pantalla la
ventana del Proyecto – VBAProject. Allí deberás hacer clic derecho sobre la
carpeta Microsoft Excel Objetos correspondiente al libro Excel en donde desees incluir tu
nueva macro para proteger y desproteger una hoja Excel. En el menú desplegable que
aparecerá selecciona Insertar y luego Módulo, para crear un nuevo módulo en donde
serán alojadas nuestras macros.
En la imagen anexa puedes apreciar cuales son las opciones a seleccionar para incluir un
nuevo módulo:
Paso 3: Alojar código para proteger o desproteger una hoja Excel.
Nuestro siguiente paso será copiar en el nuevo Modulo que hemos insertado el siguiente
código de Visual Basic. El código incluye dos macros: Proteger, la cual te permitirá
proteger con la contraseña de tu preferencia una hoja Excel, y Desproteger, la cual te
permitirá desproteger cualquier hoja Excel de tu preferencia si conoces cual es la
contraseña de desprotección de la misma.
En la línea de código que hace referencia al objeto Sheets deberás escribir el nombre de
la hoja de cálculo de Excel que deseas proteger o desproteger según la macro que
edites.En el código que te estamos suministrando ambas macros se encuentran
trabajando sobre la Hoja1. Puedes cambiar libremente esta configuración por la hoja de tu
preferencia cambiando el tecto Hoja1 por el nombre de la hoja de cálculo a proteger o
desproteger cuidando de respetar las comillas.
En el campo (“xxxx”) de ambas macros vas a colocar la contraseña de tu preferencia,
recomendablemente una que puedas recordar fácilmente:
Sub PROTECCION()
Sheets("Hoja1").Select
ActiveSheet.Protect ("XXXX")
End Sub
Sub DESPROTEGER()
Sheets("Hoja1").Select
ActiveSheet.Unprotect ("XXXX")
End Sub
Para probar o ejecutar cualquiera de tus nuevas macros para proteger o desproteger una
hoja Excel solo debes colocar el cursor al comienzo de cada código y presionar el botón de
ejecución de la Macro (Ejecutar Sub/UserForm (F5)).
Para que la Macro sea más segura debes bloquear el acceso al Editor de Visual Basic y
con esto restringir el acceso. Nuestro último paso de este tutorial nos mostrará como
hacerlo.
Paso 4: Proteger el acceso al Editor de Visual Basic.
En el Editor de Visual Basic harás clic derecho sobre la carpeta Microsoft Excel Objetos del
libro de Excel con el que trabajas para que selecciones en el menú desplegable que te
aparecerá la opción Propiedades de VBAProject. En la imagen anexa podrás apreciar cual es
esta opción:
Una vez seleccionada la opción Propiedades de VBAProject te va aparecer un cuadro de
dialogo en donde vas a seleccionar la pestaña Protección en donde marcarás la opción
“Bloquear proyecto para visualización”. Debajo de esta opción debes ingresar la
contraseña de tu preferencia para tener acceso al Editor de Visual Basic. Esta
contraseña te será solicitada la próxima vez que intentes editar el código al momento de
acceder al Editor de Visual Basic.
Esperamos que este tutorial te haya resultado de máxima utilidad, no dudes comentarnos
si tienes alguna duda o consulta adicional.
Recuerda que en nuestra categoría de artículos relacionados con Macros en Excel
podrás encontrar muchísima más información, artículos y tutoriales.
Más artículos de Macros en Excel
El Equipo EXCELLENTIAS.COM
XXXXXXXXXXXXXXX
Tablas Dinámicas y campos calculados Posted On 24/08/2010 In Tutoriales Excel
Las Tablas Dinámicas han supuesto la revolución en Hojas de Cálculo de los últimos años.
Permiten generar informes rápidos y flexibles. Si usted llega a conocer bien su
funcionamiento puede cambiar radicalmente la gestión de su departamento o unidad de
negocio.
En este artículo vamos a crear una Tabla Dinámica partiendo de una base de datos. En la
tabla dispondremos de los costes de diferentes departamentos de la empresa para el año
2010 y la previsión para 2011. Crearemos un campo calculado que nos permita observar
el incremento de cada departamento en estos años.
La base de datos de partida es sencilla.
Coste por Proyecto y Departamento
En Excel 2007 vamos al menú Insertar y luego Tabla Dinámica. Siguiendo unos sencillos
pasos llegamos a crear una tabla dinámica como la que se muestra en la siguiente
imagen:
Disponemos de los costes del año 2010 y la previsión para 2011 por cada uno de los
departamentos. Los cuatro proyectos se han establecido como filtro de página en la parte
superior de la tabla dinámica.
Ahora deseamos disponer de una columna más que nos indique la variación porcentual
experimentada por los costes entre los años 2010 y 2011. Este objetivo se podría lograr
por varios métodos:
1. Escribiendo en la celda D5 la fórmula: =C5/B5-1. Esta fórmula nos da el
incremento en tanto por uno. Para verlo en porcentaje basta pulsar sobre el icono de
porcentaje (%).
2. Establecer la fórmula anterior pero vinculando sobre las celdas C5 y B5. En este
caso veremos que la fórmula utiliza la función IMPORTARDATOSDINAMICOS. Esta forma
de trabajar tiene la ventaja de que esta función apunta a la tabla dinámica y por tanto no
perdemos el vínculo dinámico con la base de datos.
3. Crear un campo calculado. Este es el método que utilizaremos en este artículo.
Creación del campo calculado
En Excel 2007 con el cursor sobre la tabla dinámica veremos arriba una nueva opción
denominada:
Herramientas de tabla dinámica
Al pulsar sobre ella se abren un nuevo menú sobre el que pulsaremos sobre Formulas.
La imagen anterior puede diferir de la que usted pueda ver en pantalla, ya que en Excel
2007 la cinta de opciones muestra diferentes iconos, o éstos más o menos resumidos en
función de la resolución de su pantalla y del tamaño de ventana que utilice.
Al pulsar sobre Fórmulas elegimos Campo calculado.
Aparece una ventana denominada Insertar campo calculado en el que crearemos la
fórmula:
=’2011′/’2010′-1
La fórmula se crea introduciendo los campos (columnas) de la tabla dinámica. En este
caso calculamos el porcentaje de variación por la clásica fórmula:
Valor Final / Valor Inicial -1
Expresión que es igual a la siguiente:
(Valor Final – Valor Inicial) / Valor Inicial
En nuestro caso los costes del año 2010 son los valores iniciales y las previsiones para
2011 son los valores finales.
Esto genera una nueva columna que denominamos Var. % que recoge la variación
porcentual de los costes entre los años 2010 y 2011. Inicialmente los valores que nos dan
están en tanto por uno y hemos de ser nosotros los que debemos dar formato a esos
valores como Porcentaje de dos decimales.
Los campos calculados son muy útiles al trabajar con tablas dinámicas y tienen la ventaja
de que no perdemos el vínculo dinámico con la base de datos.
Ejercicio propuesto
En la Hoja3 disponemos de una base de datos con 200 registros con los siguientes
campos: Fecha, Artículo, Facturación y Unidades. Nuestro objetivo es crear una tabla
dinámica agrupada por meses y trimestres en la que introducimos un campo calculado que
nos proporcione el precio medio de venta en cada mes.
Todos los datos de la base de datos son aleatorios. Así la fecha es un valor aleatorio del
primer semestre del año 2010, y se genera con la fórmula:
=ALEATORIO.ENTRE(FECHA(2010;1;1);FECHA(2010;6;30))
Los posibles artículos son cinco y se generan aleatoriamente con la fórmula:
=ELEGIR(ALEATORIO.ENTRE(1;5);”Art1″;”Art2″;”Art3″;”Art4″;”Art5″)
En Excel 2003 y anteriores para que no de error la fórmula ALEATORIO.ENTRE debemos
haber activado el complemento de Herramientas para análisis. Esto se puede activar en el
menú Herramientas, Complementos.
Agrupando las fechas simultáneamente por meses y por trimestres obtenemos la tabla
dinámica que se muestra en la imagen.
Ahora hemos de crear el campo calculado que insertará una nueva columna en la tabla
dinámica. Pretendemos calcular el precio medio, por tanto hemos de dividir la facturación
entre el número de unidades.
La tabla dinámica que obtenemos ya incorpora el campo calculado Precio medio.
Los resultados numéricos que usted obtenga serán diferentes de los que se muestran en la
anterior imagen, esto es debido a que la base de datos trabaja con valores aleatorios. Podemos
ver cómo cambian los valores de la tabla dinámica al actualizarla. Para ello pulse con el botón
derecho del ratón sobre la tabla dinámica y elija Actualizar.
Al cambiar los datos en la base de datos nuestra tabla dinámica se actualiza al pulsar
sobre la opción Actualizar. En la gestión empresarial no dispondremos de datos aleatorios
en la base de datos pero éstos si serán cambiantes y podremos actualizar fácilmente
nuestros informes ya que la tabla dinámica no pierde el vínculo dinámico con la base de
datos.
XXXXXXXX
Eliminar celdas en blanco en Excel Posted On 06/06/2010 In Tips, Tutoriales Excel
Sabias que a través del comando de selección de MS Excel Ir a Especial podemos
eliminar celdas en blanco de forma más rápida y segura, ya que esta acción en la mayoría
de las veces se realiza de forma manual lo que en muchos casos se hace tedioso por el
volumen de los datos y hasta puede ocasionar errores.
¡En Practica!
Veamos a continuación mediante un sencillo ejemplo como emplear este comando:
En un conjunto de datos que inicialmente vienen ordenados en una columna que tienen
celdas en blanco entre sí se requiere tener los datos ordenados pero sin las celdas en
blanco; una solución a este particular es emplear el comando de selección Ir a Especial.
El conjunto de datos inicialmente viene de la siguiente manera:
El primer paso es hacer la selección de todo el rango con datos y presionar la tecla F5 o el
método abreviado Ctrl + I en donde automáticamente aparecerá un cuadro de dialogo Ir a
en el cual vamos a seleccionar el botón Especial:
Luego de haber hecho clic en el botón Especial aparecerá un nuevo cuadro de dialogo Ir a
Especial en donde vamos a seleccionar Celdas en blanco tal como se ve en la imagen
anexa:
Una vez hecho la selección hacemos clic sobre el botón Aceptar y de inmediato las celdas
en blanco ya están seleccionadas para que puedan ser eliminadas:
Para que las celdas en blanco puedan ser eliminadas debemos usar el metodo abreviado
Ctrl – en donde luego aparecerá un nuevo cuadro de dialogo Eliminar celdas en el cual
vamos hacer clic en la opción Desplazar las celdas hacia arriba:
Una vez seguido estos pasos el resultado que vamos a obtener es que todas las celdas en
blanco del rango seleccionado ya no aparecen tal como se ve en la imagen anexa:
Este útil comando nos brinda una posibilidad muy util para la eliminación de celdas en
blanco de manera efectiva sobre todo si estamos manejando grandes volúmenes de datos.
XXXXXXXX
Prueba logica con color de fondo de una celda Posted On 07/08/2010 In Macros, Macros Excel
Recientemente uno de nuestros usuarios nos hizo una interesante pregunta, en la cual
manifestó lo siguiente: “¿Es posible poner un color de fondo como prueba lógica dentro de
la función SI de Ms Excel®?”
La respuesta es sí, existen varios métodos con los que podemos construir la función a
partir de esa premisa sin embargo esta vez vamos a emplear una función desarrollada por
el MVP de MS Excel® Chip Pearson en su blog www.cpearson.com la cual nos va a
permitir elaborar una función que identifica el color de fondo de una celda para elaborar
con ella luego fórmula que emplee la función SI para aplicar una prueba lógica al color de
fondo. Es necesario aplicar esta técnica dado que MS Excel® por defecto no trae una
función que permita identificar el color de fondo de una celda, debemos construirla a través
de Visual Basic.
Como todo lo demás que existe en el mundo de la computación los colores son realmente
un números. Todos los colores que se muestran en la pantalla de la computadora se
encuentran definidos a partir de combinaciones de tres componentes primarios: uno rojo,
uno verde y uno azul. Esto es lo que se conoce como código RGB. Visual Basic para
Aplicaciones dispone de una función RGB que podemos emplear para combinar valores de
rojo, verde y azul para crear un valor de RGB en particular y en consecuencia un color en
específico. Chip Pearson precisamente aprovechó este particular para desarrollar un set
de funciones de gran utilidad que emplean como argumento el color de fondo de una celda
o de un rango de estas.
Lo primero que debemos realizar para conocer cual es nuestra paleta de colores
predeterminada es aplicar un simple código para que la misma se muestre en una hoja de
cálculo. La paleta de colores consta de 56 colores RGB que MS Excel® soporta para su
uso por ejemplo en los fondos de celdas y colores de fuentes. El valor de estos 56 colores
puede ser cualuiera de entre los 16 millones de colores disponibles pero en la práctica en
MS Excel® solo podemos emplear 56 colores al mismo tiempo.
El código a aplicar para conocer nuestra paleta de colores es el siguiente:
Código VBA – Atención: Antes de implementar este código tome la
precaución de guardar un soporte de su archivo. Excellentias no se
hace responsable por mal funcionamiento o daños que pueda causar la
implementación de este código.
Sub Displaypalette()
Dim N As Long
For N = 1 To 56
Cells(N, 1).Interior.ColorIndex = N
Next N
End Sub
Este código cambia el color de fondo de las primeras 56 celdas de la hoja activa donde lo
ejecutemos. El número de fila será igual a un número que llamaremos índice de colores,
que no es más en que la posición se encuentra un color de los que serán desplegados de
la fila 1 a la 56.
Para aquellos que dan sus primeros pasos en VBA recuerden que para poder ejecutar
este código tan solo es necesario insertar un modulo nuevo en Microsoft Visual Basic en
donde vamos a cargar todos los códigos con los que vamos a trabajar en esta publicación.
Una vez cargado este código lo ejecutamos desde el panel de Microsoft Visual Basic o
bien desde la Cinta de Opciones en la ficha Programador/ Macros y con esto las primeras
56 celdas van a tener los primeros 56 colores de los 16 millones de colores disponibles.
Después de haberse ejecutado la macro el resultado es tal cual lo mostrado en la imagen
anexa:
Esta paleta de colores nos va a servir mediante la función de color (ColorIndexOfOneCell)
para determinar un valor asociado que a su vez nos va a permitir crear la prueba
lógica con la función SI.
A continuación, para alcanzar nuestro objetivo inicial vamos a cargar el siguiente código de
Visual Basic que nos permitirá crear una nueva función ColorIndexOfOneCell la cual
partiendo de simples argumentos identifica cual es el color de fondo de una celda
para arrojarnos como resultado cual es el valor de índice de color (1 al 56) del fondo de
esta:
Código VBA – Atención: Antes de implementar este código tome la
precaución de guardar un soporte de su archivo. Excellentias no se
hace responsable por mal funcionamiento o daños que pueda causar la
implementación de este código.
Function ColorIndexOfOneCell(Cell As Range, OfText As Boolean, _
DefaultColorIndex As Long) As Long
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' ColorIndexOfOneCell
' This returns the ColorIndex of the cell referenced by Cell.
' If Cell refers to more than one cell, only Cell(1,1) is
' tested. If OfText True, the ColorIndex of the Font property is
' returned. If OfText is False, the ColorIndex of the Interior
' property is returned. If DefaultColorIndex is >= 0, this
' value is returned if the ColorIndex is either xlColorIndexNone
' or xlColorIndexAutomatic.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim CI As Long
Application.Volatile True
If OfText = True Then
CI = Cell(1, 1).Font.ColorIndex
Else
CI = Cell(1, 1).Interior.ColorIndex
End If
If CI < 0 Then
If IsValidColorIndex(ColorIndex:=DefaultColorIndex) = True
Then
CI = DefaultColorIndex
Else
CI = -1
End If
End If
ColorIndexOfOneCell = CI
End Function
Private Function IsValidColorIndex(ColorIndex As Long) As Boolean
Select Case ColorIndex
Case 1 To 56
IsValidColorIndex = True
Case xlColorIndexAutomatic, xlColorIndexNone
IsValidColorIndex = True
Case Else
IsValidColorIndex = False
End Select
End Function
Esta función está compuesta por los siguientes argumentos:
=ColorIndexOfOneCell(Cell; OfText; DefaultColorIndex)
Cell: es la celda cuyo color se debe leer.
OfText: son los argumentos lógicos Verdadero o Falso que indican si se devuelve el índice
de color de la fuente (OfText = Verdadero) o el fondo (OfText = Falso).
DefaultColorIndex: El parámetro DefaultColorIndex es un valor de índice de color (1 a 56)
que va a ser devuelto si no hay color específico donde se ha asignado a la fuente o el
fondo del relleno.
La función ColorIndexOfOneCell ofrece una utilidad limitada ya que solo hace referencia a
una celda en particular para otros casos también Chip Pearson desarrollo funciones
adicionales con diferentes características que gustosamente pueden ver en su publicación
“Color Functions In Excel”.
Ahora vamos a probar que la función ColorIndexOfOneCell esté trabajando sin presentar
ningún inconveniente, los resultados iníciales los vemos mediante la siguiente imagen:
En efecto tal como vemos está funcionando correctamente ya que el color amarillo está
ubicado en la celda A6 por lo que el valor asociado a este es 6, ahora podemos trabajarla
en conjunto con la función SI.
Tras haber realizado estos pasos ahora vamos a utilizar la función ColorIndexOfOneCell
como prueba lógica de la función SI (como recomendación previamente se debe tener
identificado cual es el valor asociado al color de la celda).
En el siguiente ejemplo tenemos una tabla con los resultados de las calificaciones de un
grupo de estudiantes con la condición de que para aprobar la materia la nota debe ser
superior a 10 puntos sino la celda se va a colorear de rojo, para esto con anterioridad se
seleccionaron las celdas donde están las calificaciones y se aplico Formato Condicional
con la Regla “Es menor que” colocando que si el valor es menor a 10 puntos el fondo pasa
a ser rojo.
Pues solo nos queda aplicar la función SI colocando como prueba lógica la función
ColorIndexOfOneCell que nos va a arrojar el valor 3 correspondiente al color rojo y si lo
asociamos con el resto de los argumentos (valor_si_verdadero) las notas que son
inferiores a 10 puntos el mensaje que se va reflejar es “Reprobó”, (valor_si_falso) si son
mayores el mensaje es “Aprobó”.
El resultado de esta operación es como lo mostrado en la siguiente imagen anexa:
Para obtener este resultado previamente se deben hacer algunas modificaciones que
usualmente no realizamos sin embargo de acuerdo a nuestras necesidades nos ofrece una
excelente alternativa a una carencia de MS Excel®.
Les dejamos un archivo MS Excel® 2007 habilitado para macros con los pasos citados y el
ejemplo propuesto en esta publicación.
¿Tienen algún otro uso que se le pueda dar a esta interesante función? Pues les
recordamos que está disponible nuestro foro para responder a sus dudas y debatir sus
propuestas.
Espero la publicación les sea de mucha utilidad.
Saludos y éxito!
El Equipo de EXCELLENTIAS.COM
Fuente: Color Functions In Excel de Chip Pearson, Pearson Software Consulting, LLC.
XXXXXXXXXXXXXX
Como hacer un ranking en Excel Posted On 09/11/2010 In Formulas, Formulas y Funciones Excel
MS Excel ofrece varias alternativas para jerarquizar valores de una lista de datos, una de
ellas es mediante la función JERARQUIA no obstante esta función es limitada
cuando requieres un Ranking en Excel un poco mas complejo. Mediante el uso de
formulas podemos lograr organizar los datos para proporcionar un análisis mucho más
profundo y significativo de los datos.
A continuación te explicamos en detalle como hacer un Ranking en Excel de valores
únicos en orden descendente y orden ascendente.
¡En Practica!
En una lista tenemos los puntos de un grupo de 10 nadadores, dichos puntos van a ser
necesarios para definir la clasificación a una segunda ronda de competición, es necesario
entonces emplear una forma que nos permita jerarquizar los resultados, la lista con la que
vamos a trabajar es la mostrada en la siguiente imagen:
El resultado requerido es que se devuelva el nombre del nadador que tenga más puntos
así como también hay que tomar en cuenta que los valores deben estar en orden
descendente y deben ser resultados únicos.
En tal sentido vas a seguir los siguientes pasos para lograr realizar el ranking solicitado:
Paso 1
Vas a necesitar crear una columna adicional donde vas a insertar la función JERARQUIA y
vas a agregarle el factor de corrección para evitar que los valores repetidos afecten el
ranking y esto conlleve a que solo haya valores únicos, el resultado de aplicar la formula
con los criterios antes mencionados es tal como lo mostrado en la siguiente imagen:
En la columna “Jerarquía” se empleo la siguiente formula para obtener valores únicos de
acuerdo a los datos de la columna “Puntos”:
=JERARQUIA(C3;$C$3:$C$12;0)+CONTAR.SI($C$3:C3;C3)-1
La formula arroja como resultado un ranking de acuerdo al nadador que tenga más puntos;
por ejemplo “Fernando” que tiene 13,63 puntos se le asigno la primera posición y David
que tiene 7,06 puntos se le asigno el séptimo puesto.
Paso 2
Insertas una columna adicional que vas a denominar “Nombre” y es donde vas a insertar la
formula que va a traer el nombre del nadador que tenga la mejor posición de acuerdo a los
puntos que posea.
La formula que vamos a emplear para lograr el resultado consta de las siguientes
funciones: DESREF, COINCIDIR, K.ESIMO.MENOR y FILA.
Cada una de las funciones va a cumplir una labor en específico de acuerdo a lo solicitado.
Mediante DESREF y empleando como argumento “fila” de la función utilizamos
COINCIDIR en conjunto con K.ESIMO.MENOR y FILA obtenemos el nombre del nadador
con mayor puntaje y mejor jerarquía con respecto al resto de los nadadores.
La formula resultante que empleamos es la mostrada a continuación:
=DESREF(B$3;COINCIDIR(K.ESIMO.MENOR(E$3:E$12;FILA()-
FILA(E$3)+1);E$3:E$12;0)-1;0)
Aplicando esta formula a todo el conjunto de datos obtenemos los siguientes resultados:
Tal como se ve en la imagen anexa en la columna “Nombre” aparecen los nombres de los
nadadores ordenados de acuerdo a su ranking, como por ejemplo el caso de “Fernando”
quien posee ranking 1 y aparece en la primera posición de la lista, de igual forma el caso
de “David” que tiene ranking 7 y aparece en la séptima ubicación.
Paso 3
Por ultimo para tener la tabla completa vamos a traer los puntos que tuvo cada nadador y
los vamos a cargar del lado de los nombres, para ello vamos a emplear la función
BUSCARV con los argumentos que habitualmente empleamos quedando para este caso
de la siguiente manera:
=BUSCARV(H3;$B$3:$C$12;2;FALSO)
Resultados
La tabla con los resultados finales queda conforme a lo mostrado en la siguiente imagen:
Ranking en orden ascendente
Se preguntaran ¿Es posible crear también una formula con un Ranking en Excel a la
inversa es decir, en orden ascendente? En efecto si, ingresando a la función
JERARQUIA y combinándola con la función CONTAR.SI podemos lograr que el
ranking sea en orden ascendente nuevamente mediante el uso de algunas formulas.
Vamos a continuar trabajando sobre la tabla que veníamos utilizando:
Para lograr que el ranking sea en orden ascendente primero insertamos una columna
adicional donde vamos a obtener los valores de la jerarquía, para luego insertar la formula
que vemos a continuación:
=CONTAR($C$16:$C$25)-
(JERARQUIA(C16;$C$16:$C$25;0)+CONTAR.SI($C$16:C16;C16))+2
El resultado que vamos a alcanzar con la formula anterior es que de acuerdo a los puntos
que tenga cada nadador se va a arrojar un valor en orden descendente, los resultados de
aplicar la formula los podemos apreciar mediante la siguiente imagen:
Los valores del ranking tal como se ve en la imagen ahora han cambiado por ejemplo para
el caso del nadador “Fernando” la jerarquía da como valor 10 (Diez) y para el nadador
“David” la jerarquía da como resultado 4 (Cuatro).
Solo resta crear una columna donde vamos a tener los nombres de los nadadores de
acuerdo a su posición en el ranking, para ello vamos a emplear la formula que utilizamos
para el primer ejemplo:
=DESREF(B$16;COINCIDIR(K.ESIMO.MENOR(E$16:E$25;FILA()-
FILA(E$16)+1);E$16:E$25;0)-1;0)
Dicha formula permite ordenar Mediante la función DESREF y en combinación con
COINCIDIR, K.ESIMO.MENOR y FILA el nombre del nadador con el valor jerarquía más
bajo con respecto al resto de los nadadores.
Los resultados de emplear la formula lo observamos mediante la siguiente imagen:
Tal como se ve el orden de los nombres de los nadadores cambio ya que el valor de el
ranking para este caso es en orden ascendente y los nombres son ordenados de acuerdo
al que tenga menor puntos en adelante.
Existen opciones adicionales para hacer un Ranking en Excel no obstante las formulas
presentadas en este artículo son una muy buena opción a la hora de elaborar una
jerarquía dentro de un grupo de datos.
XXXXXXXX
Funcion Excel SI.ERROR Posted On 11/01/2011 In Formulas y Funciones Excel, Logicas
Dentro del manejo diario de tablas en MS Excel es probable que tengamos errores en los
cálculos por infinidad de razones, es por eso necesario aplicar un corrector que nos haga
el trabajo de limpiar los errores de los cálculos, para ese trabajo tenemos disponible desde
la versión MS Excel 2007 la función SI.ERROR la cual de acuerdo a la gama de errores
que puedan suceder en Excel arroja un valor o mensaje que establezcamos dentro de los
argumentos de la función.
Función SI.ERROR
La función SI.ERROR devuelve un valor que se especifica si una fórmula lo evalúa como
un error; de lo contrario, devuelve el resultado de la fórmula. La función SI.ERROR es
adecuada para interceptar y controlar errores dentro de una fórmula.
La función SI.ERROR la puedes hallar en la Biblioteca de funciones dentro de
la categoría de funciones Lógicas tal como se ve en la imagen anexa:
La sintaxis de la función SI.ERROR es la siguiente:
=SI.ERROR(valor,valor_si_error)
Valor: Es el argumento en el que se busca un error. Puede ser una referencia a una
función o formula.
Valor_si_error: Es el valor o mensaje que se devuelve si la fórmula lo evalúa como error.
Los tipos de error que son evaluados en la función son los siguientes:
#N/A
#¡VALOR!
#¡REF!
#¡DIV/0!
#¡NUM!
#¿NOMBRE?
#¡NULO!
Importante para su consideración
Si valor o valor_si_error están en una celda vacía, SI.ERROR los trata como un
valor de cadena vacía (“”).
Si valor es una fórmula de matriz, SI.ERROR devuelve una matriz de resultados
para cada celda del rango especificado en el valor.
¡En Practica!
Esta función reemplazaría el uso que le veníamos dando a la formula que se empleaba
con la función lógica SI y con la función de información ESERROR ya que en versiones
anteriores a MS Excel 2007 esta era la alternativa mas popular para limpiar los errores de
una tabla de datos.
Si tenemos dentro de un conjunto de datos las ventas de un grupo de vendedores pero
que en relación a todo el grupo existen personas que no hicieron ventas y si usamos la
función de búsqueda y referencia BUSCARV para devolver el numero de ventas que estos
hicieron esta va arrojar error #N/A en los casos donde no encuentre resultados para los
vendedores que no hicieron ninguna venta. Entonces a partir de los datos que tenemos
podemos crear una formula sencilla con la función SI.ERROR y la función BUSCARV para
limpiar los errores que se generen con la función.
La tabla de datos con la que vamos a trabajar es tal como la mostrada en la imagen anexa:
Podemos establecer dos tipos de corrección en los datos para cuando la función nos arroje
error:
Establecer un mensaje que indique “No realizó ventas” el cual nos sirve como
alarma visual dentro del conjunto de datos.
Establecer el valor “0” Cero que nos sirva de igual forma como alarma visual para
saber que vendedores no hicieron ventas dentro de un periodo.
Teniendo los parámetros definidos ahora vamos a construir la formula, de acuerdo al
primer tipo de corrección la formula debe arrojar un mensaje, entonces si los datos parten
desde la celda B6 a la celda C12, la formula con la función SI.ERROR y BUSCARV la
insertamos en la celda E6, quedando de la siguiente manera:
=SI.ERROR(BUSCARV(D6;$B$6:$C$12;2;FALSO);”No realizó ventas”)
En relación al segundo tipo de corrección la formula debe arrojar “0” cuando el vendedor
no este dentro de la lista a la cual hace referencia la función BUSCARV, por lo cual la si
los datos parten desde la celda B6 a la celda C12, la formula con la función SI.ERROR y
BUSCARV la insertamos en la celda F6, quedando de la siguiente manera:
=SI.ERROR(BUSCARV(D6;$B$6:$C$12;2;FALSO);0)
Vemos mediante la siguiente imagen los resultados:
XXXXXXXX
Formula Excel para extraer dos últimos dígitos del nombre y apellido Posted On 01/12/2010 In Formulas, Formulas y Funciones Excel
Sin duda alguna el corazón de MS Excel y de cualquier hoja de cálculo son las funciones
que contiene y en consecuencia una de las más interesantes y útiles opciones que nos
pueden ofrecer estas herramientas es la capacidad de elaborar formulas como resultado
de la combinación de funciones, operadores aritméticos o lógicos y el contenido de otras
celdas o rangos de celdas. Mediante un uso inteligente de las diversas funciones que trae
por defecto MS Excel podemos construir un sinfín de formulas que te permiten aprovechar
al máximo la herramienta.
Por ejemplo, con frecuencia en los departamentos de tecnología resulta necesario generar
nombres de usuarios únicos para los empleados de una empresa a partir de los dos
últimos dígitos del nombre y el apellido de los empleados, como un mecanismo de control
de ingreso. Una opción apropiada en este caso es emplear una formula de Excel que nos
permitirá extraer de ciertos campos de datos solo la información requerida y concatenarla
para obtener un nombre de usuario.
¡En Practica!
Las funciones que vamos a utilizar para elaborar la formula de Excel son: CONCATENAR,
DERECHA, ESPACIOS y ENCONTRAR, con las cuales vamos a extraer los datos
necesarios en el ejemplo antes mencionado.
La tabla con los nombres y apellidos esta ordenada tal como en la imagen anexa:
La forma en que deben quedar los usuarios es por ejemplo como en el primer nombre de
la lista (Juan Antonio Sánchez): io-io-ez
Ahora tomando en cuenta el parámetro original que indica que la formula de Excel nos
debe devolver solo los dos últimos dígitos de los nombres y el apellido y adicionalmente
estar separados entre sí por medio de un guion (-), entonces vamos a empezar a preparar
la formula.
Preparar la formula
Para este ejemplo la lista de nombres empieza a partir la celda B7, el primer segmento del
nombre de usuario lo obtenemos mediante la siguiente formula:
=DERECHA(ESPACIOS(IZQUIERDA(ESPACIOS(B7);ENCONTRAR(”
“;ESPACIOS(B7);1)));2)
Teniendo como resultado: io
El segundo segmento del nombre de usuario lo generamos con la siguiente formula:
=DERECHA(ESPACIOS(IZQUIERDA(ESPACIOS(DERECHA(ESPACIOS(B7);LARGO(ES
PACIOS(B7))-ENCONTRAR(” “;ESPACIOS(B7);1)));ENCONTRAR(”
“;ESPACIOS(DERECHA(ESPACIOS(B7);LARGO(ESPACIOS(B7))-ENCONTRAR(”
“;ESPACIOS(B7);1)));1)));2)
Teniendo como resultado: io
Finalmente para obtener el último segmento del nombre solo agregamos a la formula los
siguientes argumentos de la función DERECHA:
=DERECHA(ESPACIOS(B7);2)
Teniendo como resultado: ez
Uniendo todos los argumentos antes mencionados mediante la función CONCATENAR y
agregando (-) para separar los caracteres se crea la siguiente formula de Excel:
=CONCATENAR(DERECHA(ESPACIOS(IZQUIERDA(ESPACIOS(B7);ENCONTRAR(”
“;ESPACIOS(B7);1)));2);”-”;DERECHA(ESPACIOS(IZQUIERDA(ESPACIOS(DERECHA(E
SPACIOS(B7);LARGO(ESPACIOS(B7))-ENCONTRAR(”
“;ESPACIOS(B7);1)));ENCONTRAR(”
“;ESPACIOS(DERECHA(ESPACIOS(B7);LARGO(ESPACIOS(B7))-ENCONTRAR(”
“;ESPACIOS(B7);1)));1)));2);”-”;DERECHA(ESPACIOS(B7);2))
¡Y listo! Nos da el resultado requerido, por ejemplo para el primer nombre y apellido el
usuario que se genera es el siguiente: io-io-ez.
Nota Editorial: La formula está construida para que solo devuelva datos con dos nombres
y un apellido, si se requiere emplearlo para nombres compuestos por solo un nombre y un
apellido debemos quitar el último argumento de la formula:
=DERECHA(ESPACIOS(B7);2). Los niveles permitidos de anidamiento en la versión de
Excel 2003 no hace posible tener la formula en esa versión
otra manera de llegar a lo requerido.
=CONCATENAR(EXTRAE(B7,HALLAR(” “,B7,1)-2,2),”-”,EXTRAE(B7,HALLAR(”
“,B7,HALLAR(” “,B7,1)+1)-2,2),”-”,DERECHA(B7,2))
XXXXXXXXX
Extraer números o letras de códigos alfanuméricos en Excel
MARTES, ABRIL 24, 2007
En esta nota veremos cómo extraer con Excel los números, o las letras, de códigos
alfanuméricos.
Muchas empresas usan códigos alfanuméricos, por ejemplo, para los números de
catálogo, como por ejemplo 123ABC. A veces se presenta la necesidad de aislar la parte
numérica o las letras de estos códigos.
En la primera parte de esta nota veremos una solución con fórmulas Excel, útil para los
casos en los que las cifras y las letras están agrupadas.
En la segunda parte veremos una solución con una UDF (función definida por el usuario)
para los casos en los que no hay agrupación de cifras y letras (por ejemplo, 12A3BC).
Solución con fórmulas (cifras y letras agrupadas)
Fuente: Extracting numbers from alphanumeric strings
Supongamos que en la celda A1 de nuestra hoja de Excel tenemos el código ABC123.
Nuestra tarea es extraer, con fórmulas Excel, la parte numérica, es decir, 123.
Como los números y las letras están agrupados, nuestra fórmula deberá hacer lo
siguiente:
1 – descomponer el código en sus componentes
Esto lo hacemos combinando las funciones EXTRAER y FILA de la siguiente manera
=EXTRAE(A1;FILA($1:$7);1)
Esta fórmula descompone el codigo ABC123 y pone cada uno de sus componentes en
una matriz virtual definida por la función FILA. En este ejemplo FILA define 7 filas, pero
podemos agregar más en caso de ser necesario.
2- determinar si hay un número en el código
Para esto combinamos la función ESNUMERO en la fórmula anterior
=ESNUMERO(1*EXTRAE(A1;FILA($1:$7);1))
Esta fórmula genera una matriz de valores VERDADERO y FALSO.
Al usar EXTRAE los números son convertidos en texto, por lo tanto tenemos que
multiplicar la expresión por 1 para forzar la conversión nuevamente a números.
3 – encontrar la posición del primer número (dígito) en el código
Para esto usamos la función COINCIDIR de la siguiente manera:
=COINCIDIR(VERDADERO;ESNUMERO(1*EXTRAE(A1;FILA($1:$7);1));0)
Ésta es una función matricial y debe ser introducida pulsando simultáneamente
Ctrl+Mayúsculas+Enter
4 – contar cuántos números hay en el código
Finalmente necesitamos contar cuantas cifras componen la parte numérica del código,
lo que hacemos con la función CONTAR
={CONTAR(1*EXTRAE(A1;FILA($1:$8);1))}
Ahora combinamos todo junto en esta fórmula matricial
=EXTRAE(A1;COINCIDIR(VERDADERO;ESNUMERO(1*EXTRAE(A1;FILA($1:$8);1));0);CONT
AR(1*EXTRAE(A1;FILA($1:$8);1)))
Si queremos extraer las letras tenemos que modificar la fórmula
- cambiando el argumento VERDADERO en la fórmula a FALSO
- agregando la función LARGO para calcular la cantidad de letras a extraer, reatando de
ella la función CONTAR
=EXTRAE(A1;COINCIDIR(FALSO;ESNUMERO(1*EXTRAE(A1;FILA($1:$9);1));0);LARGO(A1
)-CONTAR(1*EXTRAE(A1;FILA($1:$9);1)))
En hoja 1 del cuaderno con el ejemplo podemos ver los distintos casos.
Solución con UDF (función definida por el usuario)
Cuando las letras y las cifras no están agrupadas en el código, el resultado de las
fórmulas es incorrecto. Para esos casos, podemos escribir una función definida por el
usuario.
En un módulo del editor de Vba escribimos este código
Function ext_num_let(celda As Range, tipo As Boolean)
Dim iX As Integer, resultado As String, temp As String
Select Case tipo
Case 1
For iX = 1 To Len(celda)
temp = Mid(celda, iX, 1)
If IsNumeric(temp) Then
resultado = resultado & temp
End If
Next iX
Case Else
For iX = 1 To Len(celda)
temp = Mid(celda, iX, 1)
If Not IsNumeric(temp) Then
resultado = resultado & temp
End If
Next iX
End Select
ext_num_let = resultado
End Function
Esta función usa dos argumentos:
- Celda: la celda que contiene el código
- Tipo: 1 para extraer cifras, 0 para extraer letras
Technorati Tags: MS Excel
Posted by Jorge Dunkelman at 11:15 p.m.
Enviar esto por correo electrónico BlogThis! Compartir en Twitter Compartir en Facebook
Labels: Funciones y Formulas, Macros
19 comments: F3R, 05 febrero, 2010 03:21
excelente trabajo !!! mil gracias por compartir la información, me salvaste la vida con algo
para el trabajo, justo estan todos de vacaciones y necesitaba hacer justo esto para mañana.
graciasAnónimo, 04 noviembre, 2010 18:58
No me funciona me da #N/AJorge L. Dunkelman, 04 noviembre, 2010 19:54
Descargá el cuaderno con el ejemplo y fijate qué es lo que estás haciendo mal.Anónimo, 10 noviembre, 2010 19:24
el link del archivo no sirve da errorJorge L. Dunkelman, 11 noviembre, 2010 17:22
Acabo de corregir el enlace. Estás invitado a descargar el cuaderno.
Además, asegurate de introducir la fórmula como fórmula matricial (apretando
simultáneamente Ctrl+Mayúsculas+Enter).FELIX, 04 diciembre, 2010 01:38
LA MACRO SI FUNCIONA PERO LA FORMULA NO FUNCIONA CON DATOS COMO
ESTE A1C123Jorge L. Dunkelman, 04 diciembre, 2010 07:28
Efectivamente, la fórmula supone que que los números y las letras están agrupados, como
en ABC123 o 123ABC.Marcos, 14 abril, 2011 23:09
Jorge, como estas, estoy ocupando la formula para extraer numeros, pero al momento de
querer automatizarla en una macro no funciona, por lo que ¿como codifico en VB el
Ctrl+Mayúsculas+Enter (matricial) para la formula?
Muchas gracias y que estes bienJorge L. Dunkelman, 16 abril, 2011 14:29
En la nota aparece una macro que hace esa tarea. ¿Por qué poner la fórmula en una
macro?Pablo Limeno, 25 julio, 2011 11:22
Sin comentario !
Excelente trabajo, me ha ahorrado meses de estudio y me sirve para mi trabajo.
GRACIAS NUEVAMENTEJorge L. Dunkelman, 24 septiembre, 2011 13:35
Parece que por error he eliminao un comentario que decía
la verdad que muy buena la formula... pero en el caso de que no se encuentre ordenado el
codigo? por ejemplo: 12ab34cd
O que se tengan codigos mas complicados como ser: AB.1234_list_01_90x90_SPA.FLV ??
La respuesta es usar la función UDF que aparece al final de la nota.makuki, 02 marzo, 2013 11:54
Meter en un módulo esta función y usar la funcion.
Public Function GetNum(Valor As String) As Integer
Dim T As String
Dim Ch As String
For f = 1 To Len(Valor)
Ch = Mid(Valor, f, 1)
If IsNumeric(Ch) Then
T = T & Ch
End If
Next
GetNum = Val(T)
End FunctionJorge L. Dunkelman, 02 marzo, 2013 19:33
Hola Makuki, gracias por colaborar pero tengo que hacer dos observaciones:
1 - en el código falta declarar la variable "f", por lo que la función falla al intentar usarla
(basta con agregar Dim f as ...);
2 - la función sólo extrae valores numéricos.Celso Fonseca, 14 junio, 2013 23:21
oye me podrias en enviar el codigo ya corregido por favor nuevamente muchas gracias Jorge Dunkelman, 16 junio, 2013 00:04
Todo lo que tienes que hacer es copiar el código que aparece en la nota.Rolando Trigo, 10 julio, 2013 02:03
Hola, ¿como puedo extraer solamente numeros de 5 digitos que estan entre caracteres
comunes pero en una sola linea de texto?. Y despues colocar estos numeros de 5 digitos
en otro contexto en comun, por ejemplo entemedio de hola y chao.
Ej: abcd89808fghipoijifjdjabcd75009fghirwecbcbjabcd46892fghgfdgdabcd32987fghikllkjfd
extraer todos los numeros de 5 digitos y pasarlos entremedio de todos los hola y chao asi:
hola89808chao
hola75009chao
hola46892chao
hola32987chao
¿Es posible?. De antemano muchas graciasCAMS-INAMBARI, 12 julio, 2013 14:41
Buena información!!
Tengo una caso muy practico, donde deseo extraer las primeras palabras de cada nombre
científico:
Cedrela odorata = ceodJorge Dunkelman, 13 julio, 2013 23:05
Si el texto de las celdas sigue siempre esa estructura (dos palabras separadas por un
espacio), podrías usar esta fórmula:
=IZQUIERDA(A1;2)&EXTRAE(A1;HALLAR(" ";A1)+1;2)Jorge Dunkelman, 14 julio, 2013 09:42
Rolando,
la forma de hacerlo sería usando Vba (macros).
XXXXXXXX