猿问

如何编写一个简单的计数,如果

我试图找到这个,但我无法找出发布的其他问题的答案。我有两个条件用于对数据进行排序。一年中的月份以及它是否排名 1、2 或 3。


我需要的是在摘要页面上计算每个月有多少具有特定等级的输入


我希望这一切都是有道理的,我试图尽可能地澄清,我真的对此不知所措,并且没有任何类型的编码/脚本经验。谢谢你的帮助!


我使用下面的代码来返回数据的日期和等级并提取月份。然后它在 if 语句中使用这些月份放在一个摘要页面上。我不知道该怎么做是从这里放一个计数公式。就像这里的代码一样,我希望它类似于公式 if=month=1 and tiers(ranks)= 1 then count(它不能添加,因为如果添加,当页面更新时,它会添加到它已经计算过的数字)


    for(var i =8;i<=j;i++) { //loops through a data table to see dates and ranks

    var dates = oppwon.getRange(i,22).getValue();

    var tiers = oppwon.getRange(i,14).getValue();

    var month = new Date(dates).getMonth()+1;


    switch (true){

      case((month==1)): //if it is january

         if(tiers==1)  // if it is rank 1

           jan1.setValue(); 

         if(tiers==2)

           jan2.setValue();


波斯汪
浏览 155回答 2
2回答

九州编程

代替循环中的 setValue,您应该考虑在 variable/s 内进行计数,并且只有在循环完成后才 setValue。一些建议的代码如下:for(var i =8;i<=j;i++) { //loops through a data table to see dates and ranksvar dates = oppwon.getRange(i,22).getValue();var tiers = oppwon.getRange(i,14).getValue();var month = new Date(dates).getMonth()+1;var countTiers = {}; //count by tiers of monthscountTiers[`m${month}`][`t${tiers}`]++;你最终会在循环之后得到一个像 {m1: {t1: 2, t2: 1}} 这样的对象。然后您可以在所需的列中 setValue 进行最终计数。

当年话下

你可以定义一个函数function countTiersByMonth ( dataTable, firstline, lastline ) {&nbsp; &nbsp; var result = [ [0,0,0],[0,0,0],[0,0,0], [0,0,0],[0,0,0],[0,0,0], [0,0,0],[0,0,0],[0,0,0], [0,0,0],[0,0,0],[0,0,0] ];&nbsp; &nbsp; var dates;&nbsp; &nbsp; var tiers;&nbsp; &nbsp; var month;&nbsp; &nbsp; for(i = firstline; i<=lastline; i++) {&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; dates = dataTable.getRange(i,22).getValue();&nbsp; &nbsp; &nbsp; &nbsp; tiers = dataTable.getRange(i,14).getValue();&nbsp; &nbsp; &nbsp; &nbsp; month = new Date(dates).getMonth();&nbsp; &nbsp; &nbsp; &nbsp; switch (tiers){ // we filter by tiers because it seems that you only care about&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // tiers 1, 2, 3 wheras you care about all the months&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; case 1:&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; case 2:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; case 3:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; result[month][tiers-1]++; //+1 for the respective tier&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; of the respective month&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; //other tiers are ignored&nbsp; &nbsp; &nbsp; &nbsp; };&nbsp; &nbsp; };&nbsp; &nbsp; return result;};这需要数据表,第一个重要行(在您的示例中为 8)和最后一个相关行(在您的示例中为“j”)并输出一个包含 12 个元素的数组,每个月一个,每个包含 3 个元素,一个用于您想要计算的每一层。如果你愿意,让我们说五月的结果,你打电话tierlist = countTiersByMonth(oppwon, 8, j) // We do the counting hereprint(tierlist[4][0]) // arrays start at 0, so May -> [4], Tier 1 -> [0]print(tierlist[4][1]) // May, Tier 2print(tierlist[4][2]) // May, Tier 3
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答