Estoy tratando de hacer un script que vaya a través de todos los valores de una columna y agregue las cantidades de la columna correspondiente.

Luego copie en la parte inferior de la tabla los resultados, algo como esto:

Azul 1 Verde 2 Verde 5 Rojo 2 Azul 4

Resultados:
Azul 5 Verde 7 Rojo 2

enter image description here

Gracias simon

2
Simon Rozenberg 5 ene. 2020 a las 01:56

2 respuestas

La mejor respuesta
function countingBuckets() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('b');
  var rg=sh.getRange(1,1,sh.getLastRow(),2);
  var vA=rg.getValues();
  var cb={bA:[]};
  vA.forEach(function(r,i){
    if(!cb.hasOwnProperty(vA[i][0])) {
      cb[vA[i][0]]=vA[i][1];
      cb.bA.push(vA[i][0]);
    }else{
      cb[vA[i][0]]+=vA[i][1];
    }  
  });
  sh.appendRow(["Results"]);
  cb.bA.forEach(function(e,i){
    sh.appendRow([e,cb[e]]);
  });
}

function countingBuckets() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('b');
  var rg=sh.getRange(1,1,sh.getLastRow(),2);
  var vA=rg.getValues();
  var cb={bA:[]};
  vA.forEach(function(r,i){
    if(!cb.hasOwnProperty(vA[i][0])) {
      cb[vA[i][0]]={cells:0,sum:0};
      cb[vA[i][0]].sum=vA[i][1];
      cb[vA[i][0]].cells=1;
      cb.bA.push(vA[i][0]);
    }else{
      cb[vA[i][0]].sum+=vA[i][1];
      cb[vA[i][0]].cells+=1;
    }  
  });
  sh.appendRow(["Results"]);
  cb.bA.forEach(function(e,i){
    sh.appendRow([e,cb[e].sum,cb[e].cells]);
  });
}

Objeto Javascript

1
Cooper 5 ene. 2020 a las 23:54

Con la fórmula, puedes usar esto:

= filter
  (
     { unique(A1:A),
       sumif(A1:A,"=" & UNIQUE(A1:A),B1:B)
     }
     , unique(A1:A)<>""
  )

enter image description here

1
user11982798 5 ene. 2020 a las 00:38