lunes, 28 de octubre de 2013

Promedio Móvil de x Meses

"Tengo un histórico con la cifra de ventas mensual y me gustaría poder calcular el promedio de ventas de los últimos x meses hasta la fecha de hoy".

No problemo. Lo resolveremos haciendo uso de las funciones SI.ERROR, PROMEDIO, DESREF, COINCIDIR, BUSCARV y HOY. Supongamos que tenemos la siguiente tabla con la fecha y su cifra de ventas. Preparamos además la entrada de datos, es decir, el número variable de meses para calcular el promedio:
Empezamos calculando la fecha actual. Para ello nos ponemos en la celda C4 y escribimos la fórmula  =HOY()
Seleccionamos el rango E3:E32 y le damos el nombre Datomes (como siempre lo podemos crear haciendo clic en el Cuadro de nombres, a la izquierda de la barra de fórmulas, escribiendo dicho nombre y pulsando Enter). Nos situamos ahora en C6 y escribimos la fórmula:
=SI.ERROR(PROMEDIO(DESREF(F2;COINCIDIR(BUSCARV(C4;Datomes;1);
Datomes);;-C2;));"No disponible")

Con la función BUSCARV localizamos la fecha actual en nuestra tabla de ventas. Al anidarla dentro de la función COINCIDIR, obtendremos el número de fila en el que se encuentra dicha fecha. A su vez, COINCIDIR se encuentra anidada dentro de la función DESREF y es el argumento de fila, esto es, partiendo de la referencia de celda F2 tiene que contar tantas filas como devuelva COINCIDIR(BUSCARV(C4;Datomes;1). Ya tenemos la fila referente al mes corriente, ahora nos queda indicarle desde qué mes queremos realizar el cálculo del promedio, es decir, de los últimos 12 meses, de los últimos 6 meses, etcétera. Esto lo resolvemos con el argumento alto de la función DESREF. En concreto tendrá que retroceder desde la fila de la fecha actual hasta el número de meses que le indiquemos en la celda de entrada C2, y por ello le ponemos signo negativo a dicha referencia (-C2).
Le he añadido la función SI.ERROR para que si indicamos un número de meses demasiado elevado no aparezca el error #¡REF! sino que aparezca un texto un poco más estético del tipo "No disponible":


Se me olvidaba... Para conseguir que el texto del rótulo de la media(B6) sea variable, es decir, que cambie en función del número de meses que escribamos en C2, tenemos que poner la siguiente fórmula en B6:  ="Media "&C2&" meses:"

sábado, 12 de octubre de 2013

Cálculo del NPS (Net Promoter Score)

"¿Podrías indicarme cómo calcular el Net Promoter Score (NPS) con excel?"

Curiosamente he recibido varios mails en las últimas semanas preguntándome diversas cuestiones sobre esta herramienta, el NPS. Aunque la mayoría quieren saber cómo se halla con excel, permitidme una pequeña introducción para aquellos que no sabéis de qué estamos hablando. El NPS es un indicador para medir la satisfacción del cliente en términos de si recomienda tu producto (promotor), le es indiferente (pasivo) o le disgusta tu producto (detractor). La idea es de Fred Reichheld y data de 2003. El modelo es muy sencillo: se les pregunta a los clientes si recomendarían tu producto/servicio o no y que lo valoren de 0 a 10, siendo el cero que no lo recomendarían en ningún caso y siendo el 10 que lo recomendarían seguro. Los valores 9 y 10 son los denominados promotores; los valores 7 y 8 son pasivos; y los valores por debajo de 7 son los detractores. La fórmula que se aplica al total de encuestas realizadas es la siguiente:
NPS= %Promotores - %Detractores
 
Vamos a calcular el NPS haciendo uso de las funciones CONTAR.SI y CONTAR partiendo del siguiente ejemplo:
Seleccionamos el rango C3:C22 y le damos el nombre PUNTOS. A continuación, nos situamos en F2 y escribimos la fórmula:
Indicar finalmente que Cualquier puntuación del NPS que supere el 0% se considera como buena, ya que cuando esto sucede significa que el número de personas que han dado puntuaciones de 9 ó 10 es superior al número de personas que han dado el resto de puntuaciones. A partir del 50% se considera un resultado excelente.

sábado, 14 de septiembre de 2013

Lista de Valores no Repetidos

"Necesito comparar dos columnas y crear una tercera columna en la que aparezcan los datos que no están repetidos. Es decir, si la columna A contiene números del 1 al 12 y la columna B contiene números del 1 al 10, necesito que en la columna C me aparezcan el 11 y el 12, ya que son los únicos dos valores que no están repetidos".

Partimos del siguiente ejemplo:
Vamos a generar una lista con los valores que no estén repetidos. Por otro lado, vamos a ordenar dichos valores de mayor a menor y, finalmente, vamos a resaltar con color de relleno cuáles son estos valores. Para ello trabajaremos con las funciones CONTAR.SI, SI.ERROR, SI, y K.ESIMO.MAYOR, y con la herramienta Formato Condicional.

Lo primero que hacemos es darle nombre al rango B3:C14 para lo que seleccionamos dicho rango y hacemos clic en el cuadro de nombres (a la izquierda de la barra de fórmulas) y escribimos Valores y pulsamos Enter. A continuación preparamos el rango donde aparecerán los valores no repetidos. Habilitamos 24 filas ya que en nuestro ejemplo partimos de 2 columnas con 12 datos cada una y, por lo tanto, podríamos llegar a tener 24 valores no repetidos. Le añadimos a la derecha un número de orden que utilizaremos posteriormente:
Nos situamos en la celda G3 y escribimos la fórmula:
=SI(CONTAR.SI(valores;B3)=1;B3;"") y la copiamos hasta la celda G14. 
De esta manera lo que estamos haciendo es pedirle que cuente en el rango llamado Valores cuántas veces se repite cada uno de los valores de la columna B. Si se repite sólo una vez que lo escriba y si se repite más veces que no ponga nada ("").
Nos situamos ahora en G15 y escribimos una fórmula casi idéntica:
=SI(CONTAR.SI(valores;C3)=1;C3;"") y la copiamos hasta la celda G26. Estamos haciendo lo mismo que antes pero ahora con los valores de la columna C. El resultado será el siguiente:
Como puede comprobar, ya hemos generado la lista de valores no repetidos. Para ordenarla de mayor a menor nos situamos en la celda E3 y escribimos:
=SI.ERROR(K.ESIMO.MAYOR($G$3:$G$26;H3);"")  y copiamos hasta la celda E26.
Con la función K.ESIMO.MAYOR ordenamos los valores de mayor a menor. En los valores que se encuentre en blanco nos devolverá el error N#A y por eso utilizamos la función SI.ERROR para que cuando aparezca dicho error simplemente lo mantenga como celda en blanco (para ser más correctos celda con ""). Aplicamos formato condicional a aquellas celdas distintas de "" (puede consultar cómo hacerlo en el post Lista de valores Únicos): 
Finalmente vamos a destacar en nuestra entrada de datos aquellos valores que no están repetidos. Seleccionamos el rango B3:C14 y vamos a Formato Condicional. Seleccionamos la opción Utilice una fórmula que determine las celdas para aplicar formato  y escribimos la fórmula  =CONTAR.SI($B$3:$C$14;B3)=1  Pulsamos el botón formato y elegimos que colores u otros formatos deseamos utilizar y acabamos pulsando Aceptar. El resultado final es el que se puede observar a continuación:

miércoles, 21 de agosto de 2013

Seleccionar Aleatoriamente un Valor de un Conjunto

"En una columna tengo un conjunto  de valores del tipo 1, 1, 2, 5, 6, 6, 8, 2, 8, 1, 5, etcétera, y quiero seleccionar de manera aleatoria uno de estos valores".

Para solucionar este problema utilizaremos las funciones DESREF, CONTAR y ALEATORIO.ENTRE .  Partimos del siguiente ejemplo:
Lo primero que hacemos es darle nombre al rango de valores. Seleccionamos desde B3 hasta B16, hacemos clic en el cuadro de nombres (a la izquierda de la barra de fórmulas) y escribimos el nombre: valores y pulsamos Enter. A continuación nos situamos en la celda D10 y escribimos la siguiente fórmula que explico a continuación:
=DESREF(B2;ALEATORIO.ENTRE(1;CONTAR(valores));) 

CONTAR(Valores) cuenta el número de valores que hay en dicho rango. En nuestro ejemplo el resultado será 14. Al anidar esta función dentro de la función ALEATORIO.ENTRE, estamos consiguiendo que genere un número aleatorio entre 1 y 14 (que es el número mínimo y máximo de filas de nuestro rango). El problema es que entre 1 y 14 hay valores que no se encuentran en nuestra lista, por ejemplo el 7, el 11, el 12, etcétera. Lo que hacemos ahora es utilizar el número aleatorio generado para ir a una posición de la lista que tenemos y obtener el número que se encuentre en dicha posición. Para ello utilizamos la función DESREF. Partimos de la celda B2 y, a partir de dicha celda, excel se posicionará en la fila del rango Valores que de manera aleatoria hemos generado con el resto de la fórmula ya explicada. Si, por ejemplo, el número generado es un 11, excel se desplazará 11 filas más abajo de la celda de partida (B2) y nos devolverá el valor de B13, esto es, 6. Pruebe a pulsar la tecla F9 y verá cómo se recalcula el número y siempre dentro de los existentes en la lista :

lunes, 12 de agosto de 2013

Insertar Filas Intercaladas

"Tengo un archivo con unas 800 filas escritas y necesito intercalar una fila en blanco entre cada una de dichas filas escritas".

Empecemos por un caso sencillo. Tenemos la siguiente tabla mostrada en la imagen y queremos añadir una fila intercalada:

La forma más sencilla es utilizar la selección discontinua. Presionando la tecla Ctrl, hacemos clic en las celdas B4, B5, B6... hasta B12. Debemos hacer un clic en cada celda y no seleccionar como rango. Una vez tengamos hecha la selección discontinua vamos al menú Insertar/ Insertar Filas de Hoja y objetivo conseguido.
El problema es que si tenemos una cantidad grande de filas este sistema se hace eterno. He encontrado en la red una solución que me parece muy original y sencilla (sin necesidad de realizar macros) que comparto con vosotros y que encontraréis en el siguiente link la web del programador .
Voy a aplicarlo a nuestro ejemplo para que se vea bien aunque donde es verdaderamente efectivo es en tablas con muchas filas. Lo primero que hacemos, siguiendo las indicaciones de Ricardo -autor del post-, es generar una lista de números impares. En nuestro ejemplo original, nos situamos en la celda A2 y escribimos el rótulo Nº (por ejemplo). En A3 escribimos un 1 y en A4 un 3. Seleccionamos A3:A4 y copiamos hasta A12, que es la última fila de nuestra tabla. A continuación generamos una lista de números pares a partir de A13. En dicha celda escribimos un 2 y en A14 un 4. Seleccionamos ambas y copiamos hasta A22 (10 filas en total). Obtenemos lo siguiente:
Ahora sólo tenemos que situarnos en A3 e ir al menú Ordenar y Filtrar/Ordenar de la A a Z:
Procedemos ahora a borrar la columna A y problema resuelto (tan sólo tendremos que retocar algún formato si ya los teníamos preestablecidos antes de realizar la operación).

sábado, 10 de agosto de 2013

Obtener Parte de una Cadena Alfanumérica

"Tengo una columna con más de 500 registros de un código alfanumérico. La estructura es: una serie de números, un espacio, una serie de letras. La cantidad de números y letras es variable pero siempre los separa un espacio. Necesito obtener sólo los números y que se queden como formato de valor (no de texto)".

La solución es muy sencilla utilizando tres funciones como VALOR, IZQUIERDA y HALLAR. Partimos del ejemplo que se muestra en la siguiente imagen y queremos obtenr lo que se muestra en la segunda imagen:

Anidando las tres funciones citadas podemos resolverlo en una sola fórmula pero empezaré detallando paso a paso para su mejor comprensión:

Lo primero es obtener la posición del espacio para cada código. Esto lo podemos hacer utilizando la función HALLAR. Esta función busca una cadena de texto dentro de una segunda cadena de texto y devuelven el número de la posición inicial de la primera cadena de texto desde el primer carácter de la segunda cadena de texto. Es muy similar a la función ENCONTRAR con la diferencia de que la función HALLAR no distingue en su búsqueda entre mayúsculas y minúsculas, mientras que la función ENCONTRAR sí lo hace. Nos situamos en la celda F4 y escribimos la fórmula:
=HALLAR(" ";B4)-1  Le estamos pidiendo que busque un espacio dentro del texto de B4. El resultado será 6 porque el espacio en blanco es el sexto carácter del código que se encuentra en la celda B4. Como además le restamos 1, el resultado será 5, que es, precisamente, el número de dígitos del primer código.
Ya tenemos el número de dígitos de todos los códigos de la columna B. A continuación tendremos que proceder a"extirparlos". Para ello nos situamos en la celda G4 y escribimos la siguiente fórmula:
=IZQUIERDA(B4;F4)   De esta manera obtendremos la parte numérica del código. Al tratarse de una función de texto, el resultado obtenido es un texto y no un valor como deseamos. Para solucionar esto procederemos con el último paso...
 Nos situasmos en la celda H4 y escribimos:
=VALOR(G4)   De esta manera convertimos los dígitos del código en valor (en vez de texto):

Como ya avancé, podemos resumir estos tres pasos anidando en una sola función que escribimos en  la celda D4:
=VALOR(IZQUIERDA(B4;HALLAR(" ";B4)-1))
Copiamos hacia abajo y trabajo terminado:

Para obtener la parte alfabética del código podemos utilizar la siguiente fórmula que escribimos en F4 y copiamos hacia abajo:
=DERECHA(B4;LARGO(B4)-HALLAR(" ";B4))

martes, 9 de julio de 2013

Cálculo de Días con Año en base 360

" Necesito calcular la diferencia en días entre dos fechas utilizando un año de base 360 y, más concretamente, necesito que la diferencia entre fechas como el 01/01/2013 y el 28/02/2013 me devuelva 60 días, es decir, 2 meses completos de 30 días comerciales"

Para realizar este tipo de cálculo, y en general al trabajar con fechas en excel, debemos tener en cuenta una consideración importante, a saber:  excel almacena las fechas como números de serie secuenciales. Si introducimos una fecha inicial y una final y la restamos para calcular la diferencia en días, excel no tendrá en cuenta la fecha final en el cálculo:


Como se puede ver resta 31-1=30 (en realidad 41.305 menos 41.275, que son los números de serie que corresponden a dichas fechas). En consecuencia, si queremos que cuente también el último día tendremos que escribir la fecha 01/02/2013 como fecha final.
En el caso concreto de la consulta realizada tendremos que trabajar con la función DIAS360. Esta función devuelve la diferencia en días entre dos fechas basándose en un año de doce meses de 30 días (360 días):


En la celda C7 escribimos la fórmula:
=DIAS360(C2;C3) 

Al utilizar esta función y escribir el primer día de marzo como fecha final, excel calcula dos meses completos en base 360, es decir, 2 meses de 30 días. La diferencia resultante es la deseada: 60 días.

lunes, 20 de mayo de 2013

Copia Masiva de Celdas

"Tengo una tabla cuya primera fila son celdas con datos y fórmulas y necesito copiar dicha primera fila hasta la fila 15.000 ¿Hay alguna otra forma que no sea "tirando hacia abajo" manualmente con el ratón?".

Efectivamente existe una forma más directa y menos cansina... Supongamos que tenemos una tabla con tres campos y queremos copiar el contenido de dichos campos hasta la fila 15.000 de nuestra hoja:
Para ello seleccionamos el área que deseamos copiar, en nuestro caso el rango B3:D3 y vamos al cuadro de nombres (como se puede ver en la siguiente imagen) y escribimos la última celda del rango donde deseamos pegar lo copiado. En nuestro caso escribiremos D15000 ya que la última columna del rango seleccionado es la D y queremos copiar hasta la fila 15.000
A continuación NO pulsamos Enter. Pulsamos Shift + Enter  y de esta manera tendremos seleccionado el rango B3:D15000 como se ve en la imagen:
Ya sólo nos queda ir al menú Rellenar / Hacia abajo y terminaremos el copiado en tan sólo unos segundos:

miércoles, 24 de abril de 2013

Validación de Caracteres No Númericos

Descargar Archivo

"Tengo una tabla en la que en uno de los campos debo introducir códigos de referencia de productos y necesito que excel compruebe que en dichas entradas no se introduce ningún carácter numérico, es decir, que sólo se pueden introducir caracteres alfabéticos (en mayúsculas o minúsculas indistintamente)".

Para solucionar este problema tendremos que comprobar cada una de las entradas carácter por carácter. Esto es debido a que excel diferencia entre entradas numéricas y no numéricas. Si escribimos un número, excel dispone de funciones y herramientas para comprobar si lo escrito es un número o no pero no ocurre lo mismo si la entrada es alfanumérica, es decir, si la entrada está compuesta por caracteres alfabéticos y caracteres numéricos. En este caso  excel considera la entrada como texto a todos los efectos. Partimos el siguiente ejemplo:

 Buscamos que excel permita entradas como las mostradas en B3 y B4 (indistintamente mayúsculas o minúsculas y con un largo entre 1 y 10 caracteres en este ejemplo) y que no permita entradas como B5 (alfanuméricas):


Para ello necesitamos "desmenuzar" carácter por carácter cada entrada. Primero vamos a realizar una lista con el número de caracteres de B3 para lo que debemos escribir las siguientes fórmulas:
copiamos la fórmula de E3 hasta M3. Finalmente copiamos el rango D3:M3 hasta D10:M10.
La primera fórmula comprueba si hay algo escrito en B3, en cuyo caso devuelve el primer valor de nuestra lista, esto es, 1. En caso de que no haya nada devuelve el texto X.
La fórmula de E3 comprueba si la celda anterior (D3) es menor que el largo total (número de caracteres) de la entrada de B3. En tal caso le suma 1 a la entrada anterior, por lo que devuelve 2 para seguir completando nuestra lista. En F3 y siguientes la fórmula comprueba lo mismo hasta que el número que aparezca supere al largo de la entrada, en cuyo caso devolverá una X:


Una vez generada una lista con el número de caracteres de cada entrada, pasamos a comprobar si cada uno de dichos caracteres es una letra o no. Para ello nos situamos en la celda N3 y escribimos la siguiente fórmula:

=--NO(ESERROR(1*(EXTRAE($B3;D3;1)))) y copiamos hasta W3 y posteriormente hasta W10 para finalizar la matriz.

Veamos como funciona esta fórmula:
La función EXTRAE nos permite extraer del texto de B3 un número de caracteres a partir de una posición inicial. El primer argumento de la función es B3 para indicarle en qué celda está el texto que nos interesa. El segundo argumento es el que hace referencia a la posición inicial, es decir, el número de carácter del texto de B3 desde el que debe de empezar la extracción. En nuestro caso ponemos D3 para que cuando copiemos hacia la derecha vaya cambiando a E3, F3, G3, etc. El último argumento indica el número de caracteres a extraer y que en nuestro caso es siempre 1. Con esta parte de la fórmula hemos conseguido desmenuzar carácter por carácter la entrada de B3.
A continuación lo multiplico por 1 para convertirlo en valor (de hecho podría utilizar también la función VALOR). Si se trata de un carácter numérico se convertirá en valor y en el caso contrario (si es una letra) me devolverá un error.
Ahora nos interesa comprobar si NO es un error, para lo que anido la función ESERROR dentro de la función NO. Aquellas entradas que no devuelvan un error me devolverán un valor VERDADERO y las que devuelvan un error mostrarán FALSO. Colocando un doble menos -- delante de la función convertimos estos valores VERDADERO y FALSO en 1 y 0 (lo podemos hacer también con la función N, como hemos visto en otros ejemplos).
En resumen, en el rango N3:W3 obtendremos un cero para aquellos caracteres de la entrada de B3 que sean alfabéticos y un 1 para aquellos que sean numéricos:


Ya sólo nos queda aplicar la Validación de datos. Para ello seleccionamos el rango B3:B10. Abrimos la herramienta de validación y  marcamos Criterio de validación Personalizada. En Fórmula escribimos: =SUMA (N3:W3)=0


De esta manera sólo permitirá introducir entradas cuya suma de cada carácter sea cero, es decir, aquellas que se compongan exclusivamente de caracteres alfabéticos:


miércoles, 20 de marzo de 2013

Lista Desplegable con Rango Dinámico

"Necesito realizar una lista desplegable que vaya incorporando automáticamente los nombres que voy introduciendo en una tabla (pero sin que aparezcan espacios en blanco en dicha lista)".

Para solucionar este problema utilizaremos dos funciones, a saber, DESREF y CONTARA y la herramienta de Validación de Datos. Partimos del siguiente ejemplo:

Si utilizamos directamente la herramienta de Validación y seleccionamos como lista el rango E3:E20 entonces nos aparecerá un desplegable con 13 opciones en blanco:


Para evitar este problema vamos a crear un rango dinámico. Empezamos por crear el nombre del rango de los participantes, esto es, seleccionamos E3:E20 y en el cuadro de nombres (a la izquierda de la barra de fórmulas) escribimos el nombre Listado. A continuación vamos a la ficha Datos / Validación de datos y seleccionamos Lista. En Origen escribimos la fórmula:

=DESREF(E2;1;;CONTARA(listado))


De esta manera, el contenido de la lista desplegable se ajustará estrictamente a las entradas que se produzcan en el rango Listado (E3:E20). Con la función CONTARA calculamos el número de celdas no vacías del rango Listado. Dicho resultado será el argumento Alto de la función DESREF y crecerá o disminuirá en función de que añadamos o eliminemos registros del listado, como se puede ver en las siguientes imágenes: 


lunes, 4 de marzo de 2013

Máximos, Mínimos y Promedios por Columnas


"He leído el post de "Resaltar Máximos, Mínimo  y Promedios con Formato Condicional" y me gustaría saber si se puede realizar el mismo cálculo pero por columnas".

La solución es muy sencilla. Partimos del siguiente ejemplo:
Nos situamos en la celda C3 y escribimos:
=MAX(C$8:C$19)  y copiamos hasta la celda G3
En C4 escribimos:
=MIN(C$8:C$19)    y copiamos hasta la celda G4
En C5 escribimos:
=PROMEDIO(C$8:C$19)   y copiamos hasta la celda G5
Seleccionamos ahora el rango C8:G19 y vamos a Formato Condicional / Utilice una fórmula que determine las celdas para aplicar formato. En Editar una descripción de regla escribimos la siguiente fórmula:
=C8=C$3  y pulsamos el botón Formato. Ahora seleccionamos el Relleno de color naranja y la fuente negrita (por ejemplo) y aceptamos.
Realizamos la misma operación de nuevo pero escribiendo ahora la fórmula:
=C8=C$4  y en el Formato seleccionamos el color verde y fuente negrita.
Finalmente vamos a resaltar aquellas zonas cuyo promedio se encuentre por encima del promedio total. Para ello seleccionamos el rango C7:G7 y vamos a Formato Condicional / Utilice una fórmula que determine las celdas para aplicar formato. En Editar una descripción de regla escribimos la siguiente fórmula:
=C$5>=PROMEDIO($C$5:$G$5)   y en el botón Formato seleccionamos, por ejemplo, relleno rosa y fuente negrita. 

sábado, 2 de febrero de 2013

Lista de Valores Únicos (con Fórmulas)

"Tengo un listado de más de 500 registros donde uno de los campos es un código. Estos códigos están repetidos en los distintos registros y necesito generar una lista utilizando fórmulas que me muestre los códigos únicos que existen". 

Este problema ya lo resolvimos haciendo uso de filtros avanzados y tablas dinámicas en artículos anteriores. Vamos a ver ahora cómo solucionarlo mediante fórmulas. A continuación muestro de dónde partimos y a dónde queremos llegar: 
Empezamos generando una columna de procesos en I3 para obtener los valores únicos. Para ello nos situamos en dicha celda y escribimos la siguiente fórmula y la copiamos hasta la celda I27:

=SI(N(CONTAR.SI($C$3:C3;C3)=1);C3;"")

Desgranemos esta fórmula:  CONTAR.SI($C$3:C3;C3)=1 verifica cada valor empezando por C3, y devuelve el valor VERDADERO cuando el código aparece por primera vez dentro del "rango dinámico" que generamos ($C$3:C3). Para convertir en 1 y 0 los valores VERDADERO ó FALSO  que devuelve esta parte de la fórmula utilizamos la función N, ya vista en otros artículos de este blog. Finalmente hacemos uso del condicional para transformar los valores 1 en el código que le corresponde y los valores 0 convertirlos en "". El resultado es el siguiente:
A continuación nos situamos en la celda H3 y escribimos la fórmula:  =SI(I3="";"";B3)
De esta manera colocamos el número que le corresponde en el listado original a cada código. Obtenemos lo siguiente:
Procedemos ahora a ordenar los datos para dejar los valores únicos al principio de la lista y los valores "en blanco" al final. Para ello nos situamos en la celda H3 y escribimos la siguiente fórmula que debemos copiar hasta H27:

=SI.ERROR(K.ESIMO.MENOR($H$3:$H$27;B3);"")

K.ESIMO.MENOR ordena la lista de menor a mayor. En las celdas que tengamos "" nos devolverá el error #¡NUM!. Para evitar este mensaje de error y conseguir que la celda se quede en blanco, usamos la función SI.ERROR (disponible a partir de la versión 2010 de excel). Esta función ejecuta el primer argumento, esto es, K.ESIMO.MENOR($H$3:$H$27;B3) y si el resultado de esta parte de la fórmula es un error entonces aplica el segundo argumento, es decir, "". Si no es un error simplemente devuelve el resultado del primer argumento. Obtenemos lo siguiente:
Tan sólo nos queda ahora buscar los códigos correspondientes a dichos números y problema resuelto. Nos situamos en la celda F3 y escribimos la siguiente fórmula que copiamos hasta la celda F27:

=SI.ERROR(BUSCARV(E3;$B$3:$C$27;2;FALSO);"")
Para concluir el modelo, podemos hacer que aparezcan bordes en las celdas con valores únicos de manera automática utilizando Formato Condicional. A saber:

1. Seleccionamos el rango E3:F27 y vamos a Formato Condicional / Nueva regla.
2. Seleccionamos "Utilice una fórmula que determine las celdas para aplicar formato".
3. En "Editar una descripción de regla" escribimos la siguiente: =E3<>""
4. Pulsamos el botón Formato y marcamos los bordes de la celda que queremos que aparezca (u otro formato que deseemos).
5. Terminamos pulsando Aplicar y Aceptar. Y trabajo concluido: