[英]How to compare latest value in range with averages based on multiple criteria using formulas in Google Sheets efficiently?
I got the following formula giving me the right result, but since it'll be in a couple of a thousand rows, it takes too long to calculate and, sometimes, it doesn't even return the result:我得到了下面的公式给了我正确的结果,但是由于它将在几千行中,因此计算时间太长,有时甚至不返回结果:
=(INDEX($F$2:$F,MATCH(maxifs($B$2:$B,$A$2:$A,$A2),$B$2:$B,0),)>Averageifs($F$2:$F,$B$2:$B,"<="&MAXIFS($B$2:$B,$A$2:$A,A2),$B$2:$B,">="&WORKDAY(MAXIFS($B$2:$B,$A$2:$A,A2),-10)))
Here's a copy containing dummy data and the hurdle highlighted, if you could help with any pointers: https://docs.google.com/spreadsheets/d/1sTehnvkjDtZE6PUpXYdiMFKZFwA10EUbzEdszWPDryY/edit?usp=sharing这是包含虚拟数据和突出显示的障碍的副本,如果您可以提供任何指针帮助: https://docs.google.com/spreadsheets/d/1sTehnvkjDtZE6PUpXYdiMFKZFwA10EUbzEdszWPDryY/edit?usp=sharing
Thank you!谢谢!
You can consider using Custom Formula to process your data with Apps Script.您可以考虑使用自定义公式通过 Apps 脚本处理您的数据。
/**
* @customfunction
*/
function compareCloseDateToDays(value) {
var result = value.flat().filter(String);
var latest = result[result.length-1];
var tenDays = result[result.length-11];
Logger.log(latest);
Logger.log(tenDays);
return(latest>tenDays);
}
/**
* @customfunction
*/
function compareCloseDateToAve(value) {
var result = value.flat().filter(String);
var latest = result[result.length-1];
var tenAve = result.slice(result.length-10);
var sum = 0;
var ave = 0;
for (var i = 0; i < tenAve.length; i++) {
sum += tenAve[i];
}
ave = sum/tenAve.length;
Logger.log(latest);
Logger.log(ave);
return(latest>ave);
}
=compareCloseDateToDays(F7:F)
=compareCloseDateToAve(F7:F)
In your original formula, you include a criteria where column A should match A8 when getting the max value of the date.在您的原始公式中,您包含一个条件,其中在获取日期的最大值时 A 列应与 A8 匹配。
You can use Filter() to filter column F before calling the custom functions.您可以在调用自定义函数之前使用Filter()过滤列 F。
Then use this function: =compareCloseDateToDays(filter(F7:F,A7:A=A8))
The output is "TRUE"然后使用这个 function: =compareCloseDateToDays(filter(F7:F,A7:A=A8))
output 是“TRUE”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.