Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

153
Vistas
Eliminar duplicado basado en 2 columnas en las hojas de Google

Este código elimina el duplicado en el nombre de la columna llamado "Número de recibo"

Cómo modificar este código si las condiciones coinciden con dos columnas como duplicado. (es decir, la columna del número de recibo y la columna del número de móvil deben duplicarse al mismo tiempo)

 function removeDuplicates() {
 var ss=SpreadsheetApp.getActive();
 var sh=ss.getSheetByName("Records");
 var vA=sh.getDataRange().getValues();
 var hA=vA[0];
 var hObj={};
 hA.forEach(function(e,i){hObj[e]=i;});//header title to index
 var uA=[];
 var d=0;
 for(var i=0;i<vA.length;i++) {
 if(uA.indexOf(vA[i][hObj['Receipt Number']])==-1) {
 uA.push(vA[i][hObj['Receipt Number']]);
 }else{
 sh.deleteRow(i+1-d++);
 } 
 }
}

Gracias por adelantado.

almost 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Creo que su objetivo es el siguiente.

  • Desea eliminar las filas duplicadas utilizando la condición de 2 columnas.

  • Por ejemplo, cuando las columnas de Número de Receipt Number de Mobile Number son las siguientes, desea eliminar las siguientes 2 filas (4 y 5).

     1 Receipt Number Mobile Number
     2 a2 b2
     3 a3 b3
     4 a2 b2 <--- delete
     5 a3 b3 <--- delete
     6 a2 b3
     7 a3 b2
    

Si mi comprensión es correcta, ¿qué tal la siguiente modificación? En esta modificación, se usa removeDuplicates .

Guión modificado:

 function removeDuplicates() {
 var checkHeadeTitles = ["Receipt Number", "Mobile Number"]; // This header titles are from your question.

 var ss = SpreadsheetApp.getActive();
 var sh = ss.getSheetByName("Records");
 var header = sh.getRange(1, 1, 1, sh.getLastColumn()).getValues()[0];
 var columnNumber = checkHeadeTitles.map(e => {
 var idx = header.indexOf(e);
 if (idx == -1) {
 throw new Error(`No header tilte of '${e}'.`);
 }
 return idx + 1;
 });
 sh.getRange(2, 1, sh.getLastRow() - 1, sh.getLastColumn()).removeDuplicates(columnNumber);

 var row = sh.getDataRange().getValues().findIndex(r => r.join("") == "");
 if (row == -1) return;
 sh.deleteRow(row + 1);
}
  • Cuando este script se ejecuta en la hoja de muestra anterior, se eliminan las filas 4 y 5.

Referencias:

  • mapa()
  • removeDuplicates(columnsToCompare)
almost 4 years ago · Santiago Trujillo Denunciar

0

function removeDuplicates() {
 var ss = SpreadsheetApp.getActive();
 var sh = ss.getSheetByName("Records");
 var [hA, ...vA] = sh.getDataRange().getValues();
 var idx = {};
 hA.forEach(function (e, i) { idx[e] = i; });
 var uA = [];
 var d = 0;
 for (var i = 0; i < vA.length; i++) {
 let x = `${vA[i][idx['Receipt Number']]}-${vA[i][idx['Receipt Number']]}`
 if (!~uA.indexOf(x)) {
 uA.push(x);
 } else {
 sh.deleteRow(i + 2 - d++);
 }
 }
}
almost 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda