簡體   English   中英

如何有效地使用 Google 表格中的公式將范圍內的最新值與基於多個標准的平均值進行比較?

[英]How to compare latest value in range with averages based on multiple criteria using formulas in Google Sheets efficiently?

我得到了下面的公式給了我正確的結果,但是由於它將在幾千行中,因此計算時間太長,有時甚至不返回結果:

=(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)))

這是包含虛擬數據和突出顯示的障礙的副本,如果您可以提供任何指針幫助: https://docs.google.com/spreadsheets/d/1sTehnvkjDtZE6PUpXYdiMFKZFwA10EUbzEdszWPDryY/edit?usp=sharing

謝謝!

您可以考慮使用自定義公式通過 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);
}

如何使用:

  • 在 function 中提供接近值的范圍
    =compareCloseDateToDays(F7:F)
    =compareCloseDateToAve(F7:F)

Output:

在此處輸入圖像描述

在此處輸入圖像描述


筆記:

在您的原始公式中,您包含一個條件,其中在獲取日期的最大值時 A 列應與 A8 匹配。

您可以在調用自定義函數之前使用Filter()過濾列 F。

示例場景:

在此處輸入圖像描述

  • 我將 A109 更改為“測試”

然后使用這個 function: =compareCloseDateToDays(filter(F7:F,A7:A=A8)) output 是“TRUE”

在此處輸入圖像描述

  • 最后一個值 = 14.35
  • 10 個工作日的值 = 14.27

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM