我一直在从事一个工作项目。我想从一组单元格范围中找出某个日期范围内是否是某个商店,然后计算该商店在该范围内显示了多少次。我的配方最有效。但是当我将商店与范围内的唯一值进行比较时,即使第一个值和第二个值的输入相同,也不匹配。
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]也不会匹配。我怎样才能解决这个问题?现在我的日志显示了。
答案 0 :(得分:0)
解决方案是强制js使用parseInt(value,10)将返回的值解析为int。祝其他有此问题的人好运。