简体   繁体   English

如何有效地使用 Google 表格中的公式将范围内的最新值与基于多个标准的平均值进行比较?

[英]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 脚本处理您的数据。

Sample Code:示例代码:

/**
 * @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);
}

How to use:如何使用:

  • Provide range of close values in the function在 function 中提供接近值的范围
    =compareCloseDateToDays(F7:F)
    =compareCloseDateToAve(F7:F)

Output: Output:

在此处输入图像描述

在此处输入图像描述


Note:笔记:

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。

Sample Scenario:示例场景:

在此处输入图像描述

  • I changed A109 to "test"我将 A109 更改为“测试”

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”

在此处输入图像描述

  • Last Value = 14.35最后一个值 = 14.35
  • Value from 10 workdays = 14.27 10 个工作日的值 = 14.27

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Google表格基于多个条件的COUNTIF / COUNTIFS公式 - Google Sheets COUNTIF / COUNTIFS formulas based on multiple criteria 基于两列条件的 Google 表格中的排名和数组公式 - Rank and Array Formulas In Google Sheets based on criteria from two columns 如何将多个公式组合到一个单元格中? 删除重复项并在Google工作表中保留最新日期 - How do I combine multiple formulas into one cell? remove duplicates and keep latest date in google sheets Google表格-使用基于多个列的OR条件进行条件格式 - Google sheets - Condition formatting using OR criteria based on multiple columns Google表格的SUM基于多个表格中的条件标准 - Google Sheets' SUM based on criteria of criteria in multiple sheets 如何根据Google表格中的多个条件填充单元格? - How do I populate a cell based on multiple criteria in Google Sheets? google Sheets上有多个基于标准的vlookup? - Multiple criteria-based vlookup on google Sheets? Google表格:计算多个条件+其他范围内的条件 - Google Sheets: Count if for multiple criteria + criteria over other range 如何从谷歌表格中的多个条件搜索中获取价值 - How to get value from multiple criteria search in google sheets 如何在 Google Sheets 上使用 INDEX + MATCH 和多个条件集来查找价值? - How to find value using INDEX + MATCH with SETS of multiple criteria on Google Sheets?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM