计算列中出现的次数

奥兹蠕虫

示例(A 列是输入,B 列和 C 列是自动生成的):

|   A   |   B   |   C   |
+-------+-------+-------+
| Name  | Name  | Count |
+-------+-------+-------+
| Joe   | Joe   |     2 |
| Lisa  | Lisa  |     3 |
| Jenny | Jenny |     2 |
| Lisa  |       |       |
| Lisa  |       |       |
| Joe   |       |       |
| Jenny |       |       |

我知道我可以用下面的函数来做到这一点。但是,我想用应用程序脚本来做到这一点。我试过嵌套 2 个称为 ( i& j) 的循环它从哪里开始ij计数,直到它不匹配i然后 j 等于i所以i只是跳到新的起点,以免重复计数,它有点工作。

我一直有一个问题,它会在最后 2 次左右的迭代中输出高数字......我认为我无法在无法使其工作后保存脚本。任何想法或帮助将不胜感激。

我想制作脚本的公式:

=ArrayFormula(QUERY(A1:A16&{"",""},"select Col1, count(Col2) where Col1 != '' group by Col1 label count(Col2) 'Count'",1))
库柏

试试这个:

它将读取带有标题的 A 列并生成带有标题的 B 和 C

function pv() {
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getActiveSheet();
  const rg=sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn());
  const vs=rg.getValues();
  let Obj={pA:[]};
  vs.forEach(function(r,i){
    if(!Obj.hasOwnProperty(r[0])) {
      Obj[r[0]]=1;
      Obj.pA.push(r[0]);
    }else{
      Obj[r[0]]+=1;
    }
  });
  let oA=[["Name","Count"]];
  Obj.pA.forEach(function(p) {
    oA.push([p,Obj[p]]);
  });
  sh.getRange(1,2,oA.length,2).setValues(oA);
}

这是一个简单的数据透视表

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章