Mmaresma/ noviembre 22, 2016/ Excel Avanzado, Funciones Excel, Macros

En ocasiones se nos a planteado la necesidad de tener que devolver sobre un rango, valores únicos (sin duplicados), pero además pudiendo seleccionar dentro del rango, las filas “pares”, “impares” o todo el rango, pudiendo devolver el dato que queramos como la función Indice de excel.

La siguiente función UDF realiza este menester.

Lo que realmente realiza la función es que teniendo un rango lo transforma en un Array (si es necesario lo hará en bidimensional), pasando este mismo rango a dimensional y luego pasando a su vez éste mismo, a otro Array final dimensional, limpio de duplicados.

La sintaxis de la función es la siguiente:

=Unicos([Rango];[Par];[Impar];[Total];[Dato])

dónde:

  • Rango: Puede ser cualquier rango seleccionado, como por ejemplo $B$9:$E$34
  • Par: Indicamos si queremos las líneas “Pares” del rango.
    • Posibles valores: VERDADERO o FALSO
  • Impar: Indicamos si queremos las líneas “Impares” del rango.
    • Posibles valores: VERDADERO o FALSO
  • Total: Indicamos si queremos las líneas “Pares” e “Impares” del rango.
    • Posibles valores: VERDADERO o FALSO
  • Dato: Indicamos que valor del Array queremos que nos devuelva la función.
    • Posibles valores: Cualquier valor entero (0, 1, 2, 3…). En el caso de que el valor sea superior al máximo del array no se mostrará nada.

 

Por ejemplo: Tenemos la siguiente tabla y queremos obtener los datos de las líneas “pares” sin duplicados.

sin_duplicados_1

La función en “F4” sería:

=Unicos($B$4:$E$29;VERDADERO;FALSO;FALSO;0)

Es decir:

  • Rango: $B$4:$E$29
  • Par: VERDADERO
  • Impar: FALSO
  • Total: FALSO
  • Dato: El 0 (cero) que es el primer dato del Array final.

sin_duplicados_2

Si los ponemos en toda la columna “F”, obtendremos los datos finales, sin duplicados, de las líneas “Pares”.

sin_duplicados_3

Para los Impares, la función sería: =Unicos($B$4:$E$29;FALSO;VERDADERO;FALSO;0)

Quedando de esta manera:

sin_duplicados_4

Y para todo, la función sería: =Unicos($B$4:$E$29;FALSO;FALSO;VERDADERO;0)

Quedando de esta forma:

sin_duplicados_5

 

Los ejemplos y el código lo podéis bajar de aquí: sin_duplicados

Espero que os haya gustado, 🙂

Comentario

Comentario

Share this Post