Hola a todos,
Hoy me gustaría publicar un post sobre registros repetidos o duplicados. Se trata de crear una función que sea capaz de extraer de un rango los elementos duplicados y mostrarlos (como registros únicos).
Es un ejercicio que voy a realizar utilizando una custom function y un loop que recorra los elementos del rango. El código que voy a usar es el siguiente:
/**
* @customfunction
* @param {string[][]}
* @returns {string[][]}
*/
function extraerDuplicados(datos: any[][]): any[] {
var miDato = new Set();
var duplicados: any[] = [];
for (var fila = 0; fila < datos.length; fila++) {
for (var columna = 0; columna < datos[fila].length; columna++) {
var valor = datos[fila][columna];
if (miDato.has(valor)) {
duplicados.push(valor);
} else {
miDato.add(valor);
}
}
}
var dupliUnicos = Array.from(new Set(duplicados));
return [dupliUnicos]
}
El resultado de esta función serán los valores únicos de los elementos que se repiten en el rango. En esta imagen lo veréis perfectamente:
El los valores que se repiten en la columna A con PRENSA Y REVISTAS y PERFUMERIA Y COSMETICA. Y es el resultado de la función extrae duplicados de la columna C.
El resultado nativo de la función derrama los resultados en una fila, para hacerlo en una columna es necesario transponer los datos. En este caso he optado por utilizar directamente la función transponer de Excel.
Otro elemento importante es que Excel muestra el error #CALC! cuando se trata de una matriz vacía, es decir, si el resultado de la función es vacío o no hay duplicados. Para obviar este error usaremos SI.ERROR()
Espero que sea de utilidad.
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies