Java脚本编码错误?无法获得匹配的单元格内容

时间:2019-03-14 20:26:26

标签: javascript excel

我一直在从事一个工作项目。我想从一组单元格范围中找出某个日期范围内是否是某个商店,然后计算该商店在该范围内显示了多少次。我的配方最有效。但是当我将商店与范围内的唯一值进行比较时,即使第一个值和第二个值的输入相同,也不匹配。

Array.prototype.getUnique = function () {
    var u = {}, a = [];
    for (var i = 0, l = this.length; i < l; ++i) {
        if (u.hasOwnProperty(this[i])) {
            continue;
        }
        a.push(this[i]);
        u[this[i]] = 1;
    }

  return a;
}   
    function countOnDate(datestart,dateend,daterange,sheet,valuesrange){
      var datestart = Utilities.formatDate(new Date(datestart), "GMT+1", "M/d/yyy")
      var dateend = Utilities.formatDate(new Date(dateend), "GMT+1", "M/d/yyy")
      var range = sheet.getRange(daterange).getValues();
      var countrange = sheet.getRange(valuesrange).getValues()
      var count = [];
      var countrangeunique = countrange.getUnique()
      //Logger.log("countrange:"+countrange)
      //Logger.log("unique"+countrangeunique)
      for (var a =0;a < countrangeunique.length;a++){
        var countnumber = 0;
        for (var b = 0; b < range.length;b++){
          if (range[b] !="" || range[b] !=[]){
          var rangeformated = Utilities.formatDate(new Date(range[b]),"GMT+1","M/d/yyy")
          Logger.log((datestart <= rangeformated) +":"+(rangeformated <= dateend))    
          if (datestart <= rangeformated && rangeformated <= dateend){
            Logger.log("activestore:"+countrangeunique[a]+" storescan:"+countrange[b]+"match:"+(countrange[b] == countrangeunique[a]))    
            if (countrange[b] == countrangeunique[a]) {
                  countnumber++
                  count[a][0] = countrangeunique[a] 
                  count[a][1] = countnumber
                  Logger.log("counternumber"+countnumber+" store: "+countrangeunique[a])
              }
          }
        }
      }
      }   

因此,从顶部开始是计数唯一功能,该功能用于在存储范围i3:i ..中查找通过变量“ valuesrange”输入的唯一值。 该范围中包含的是商店ID号。对于员工曾工作过的商店,即2512、1533。 计算日期功能会查找唯一的商店ID。然后针对每个数字检查日期范围,以确保日期在该月之内。这些都以“ datestart”(即月初)输入。 “ dateend”,即月底。和日期范围。员工工作日期,格式为“ m / d / yyy”。如果日期不在月份内,或者如果它们为空白,则应将其忽略,然后系统将移至下一个日期。然后将唯一编号与一个月内的商店编号范围进行比较,并应对其进行计数。但是,即使值相同,countrange [b] == countrangeunique [a]也不会匹配。我怎样才能解决这个问题?现在我的日志显示了。

pastebinlog

1 个答案:

答案 0 :(得分:0)

我发现的

解决方案是强制js使用parseInt(value,10)将返回的值解析为int。祝其他有此问题的人好运。