簡體   English   中英

用於計算連續單元格之間百分比的腳本 Google Sheet

[英]Script to calculate percentage between consecutive cells Google Sheet

我在 B 列中有比特幣的每日收盤價列表,我正在嘗試編寫一個腳本,將第 i 行和第 1 行之間的百分比變化放在相鄰的 C 列中(A 列是日期)。 計算需要從最后一行開始,go 回溯到第 2 行。

我使用下面的代碼並得到了兩種類型的問題:

  • 我的變量“percentageValue”返回一個數組 [null,null,...]
  • 我的最后一行生成錯誤消息“異常:數據中的行數與范圍內的行數不匹配。數據有 1 但范圍有 446。”

對於我嘗試使用 2 個變量的邏輯,我可以划分百分比計算:rangePriceValues(第 2 天的價格)和 rangePricelastValues(第 1 天的值)。

我試圖在網上找到類似的代碼,但找不到任何接近的東西(但我確信某處肯定有一個)我是 Java 的新手,如果有人能讓我走上正確的軌道,我將不勝感激。

謝謝!!

function PopulateC() 
{
 var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test__Price"); 
  var rangePrice = sheet1.getRange(2,2,sheet1.getLastRow(),1);  // full list of prices
  var rangePriceValues = rangePrice.getValues(); // value of these prices 
 var secondLastRow = rangePrice.getNumRows()-2; //total number of rows minus one value
  var rangePricelast = sheet1.getRange(2,2,secondLastRow.valueOf() ,1);  // full list of prices minus one
  var rangePricelastValues = rangePricelast.getValues(); //value of the prices at day+2

  var percentage = [];
  var percentageValue = [];
  var rangePercentage = sheet1.getRange(2,3,rangePrice.getNumRows(),1);

  for (i= rangePrice.getNumRows(); 2; i--)
    {
      percentage [i-1] = (rangePriceValues[i]/= rangePricelastValues[i]-1)* 100;
      percentageValue= percentage.valueOf();
 Logger.log(percentageValue) // this is where I see my array with [null, null,....]
      rangePercentage.setValues([percentageValue]);
    }
  }
`



 

改變這個: var rangePrice = sheet1.getRange(2,2,sheet1.getLastRow(),1);

為此: var rangePrice = sheet1.getRange(2,2,sheet1.getLastRow()-1,1);

我找到了一種通過編寫更簡單的代碼來解決問題的方法。 它可以工作,但計算速度很慢。 如果有人對如何優化代碼有意見,我將非常感激,因為我還在學習。 感謝庫珀的建議!

    function SimplePerc() {
    var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test_Bitcoin_Price");
  var rangePrice = sheet1.getRange(2,2,445,1);  
  var priceValue = rangePrice.getValues(); 


 for (var i=sheet1.getLastRow() ; 2; i--)
{
 var numerator = sheet1.getRange(i,2).getValue();
 var denominator = sheet1.getRange(i+1,2).getValue();
 var percentagecalc = (numerator /= denominator);
 var percentageclean = (percentagecalc -1)*100;
 sheet1.getRange(i,3).setValue(percentageclean);
  }
};

暫無
暫無

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

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