为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

波斯汪 2021-10-29 15:12:53
我试图找到这个,但我无法找出发布的其他问题的答案。我有两个条件用于对数据进行排序。一年中的月份以及它是否排名 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();
查看完整描述

2 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

代替循环中的 setValue,您应该考虑在 variable/s 内进行计数,并且只有在循环完成后才 setValue。


一些建议的代码如下:


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;

var countTiers = {}; //count by tiers of months


countTiers[`m${month}`][`t${tiers}`]++;

你最终会在循环之后得到一个像 {m1: {t1: 2, t2: 1}} 这样的对象。


然后您可以在所需的列中 setValue 进行最终计数。


查看完整回答
反对 回复 2021-10-29
?
当年话下

TA贡献1890条经验 获得超9个赞

你可以定义一个函数


function countTiersByMonth ( dataTable, firstline, lastline ) {

    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] ];

    var dates;

    var tiers;

    var month;

    for(i = firstline; i<=lastline; i++) { 

        dates = dataTable.getRange(i,22).getValue();

        tiers = dataTable.getRange(i,14).getValue();

        month = new Date(dates).getMonth();


        switch (tiers){ // we filter by tiers because it seems that you only care about

                        // tiers 1, 2, 3 wheras you care about all the months

            case 1: 

            case 2:

            case 3:

                result[month][tiers-1]++; //+1 for the respective tier

                                          //  of the respective month

                break;      //other tiers are ignored

        };

    };

    return result;

};

这需要数据表,第一个重要行(在您的示例中为 8)和最后一个相关行(在您的示例中为“j”)并输出一个包含 12 个元素的数组,每个月一个,每个包含 3 个元素,一个用于您想要计算的每一层。如果你愿意,让我们说五月的结果,你打电话


tierlist = countTiersByMonth(oppwon, 8, j) // We do the counting here

print(tierlist[4][0]) // arrays start at 0, so May -> [4], Tier 1 -> [0]

print(tierlist[4][1]) // May, Tier 2

print(tierlist[4][2]) // May, Tier 3


查看完整回答
反对 回复 2021-10-29
  • 2 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信