Hola a todos,
El post de hoy creo que va a resultar de bastante utilidad. Se trata de eliminar todas las ocurrencias que tenga un elemento específico en un array.
Por ejemplo, si tenemos la siguiente serie: [‘1’, ‘1’, ‘2’, ‘3’ ,’3′, ‘5’, ‘6’, ‘6’ ] y decidimos eliminar el 3, el resultado esperado será: [‘1’, ‘1’, ‘2’, ‘5’, ‘6’, ‘6’ ].
Como quiero que el ejemplo sea práctico, en lugar de crear la matriz y pegarla en el ejemplo (que es lo habitual en los tutoriales que hay publicados), lo haremos seleccionando un rango de una celda.
Por ejemplo así:

La función que podéis ver en la barra de fórmulas es la siguiente:
/**
* @customfunction
* @param {string[][]} miRango
*/
function Elimina_elemento(miRango, item) {
//pasamos el rango seleccionado a un array
miRango = miRango.toString().split(",");
//eliminamos el elemento indicado
function elimina_todo(miRango, value) {
var i = 0;
while (i < miRango.length) {
if (miRango[i] === item) {
miRango.splice(i, 1);
} else {
++i;
}
}
}
//pasamos resultado a la función
elimina_todo(miRango, item);
return (miRango.join(', '))
};
Solo tenemos que copiarla y pagarla en nuestro editor de Script Lab y probarla:

Como podéis observar hemos indicado que no se muestre el 7 en los elementos que nos devuelva la función.
He decidido programarlo como una función definida, en realidad son dos funciones, una que ayuda a capturar los datos del rango y pasarlos a un array y la otra que se encarga de eliminar el dato seleccionado.
Espero que sea de utilidad, disfrutad de lo que queda de domingo!!.
¿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