![](/img/trans.png)
[英]Google Script - Setting formulas in pre-defined cells after automatically creating a new sheet in a spreadsheet
[英]Script to calculate percentage between consecutive cells Google Sheet
我在 B 列中有比特幣的每日收盤價列表,我正在嘗試編寫一個腳本,將第 i 行和第 1 行之間的百分比變化放在相鄰的 C 列中(A 列是日期)。 計算需要從最后一行開始,go 回溯到第 2 行。
我使用下面的代碼並得到了兩種類型的問題:
對於我嘗試使用 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.