我有以下代碼可以按預期作業(總共 3 個函式)。我正在尋求有關如何撰寫更好代碼的幫助。我認為必須有一種更有效或更簡潔的方式來撰寫此代碼。特別是,我撰寫日期代碼的方式讓我很困惑它是如何作業的,只要知道它是。請并感謝您為我提供的任何幫助!
考慮到業務的季節性,我們的想法是開發一種功能,可以確定收入時間延遲的情況。該函式提取月份值(原始結束日期 - 新結束日期)。然后該函式將開始根據當前結束月份之后的月份對百分比求和,直到達到日期差異。然后采用這個百分比值來讓我們了解延遲時間的影響。
IE 應該從 2021 年 1 月開始,但不得不移動到 2021 年 5 月。這導致延遲了 4 個月。從 2 月開始,將接下來 4 個月的百分比相加。
谷歌表格:
更新:
- 這是一次計算所有行的更優化方法,并顯著減少了方法呼叫。這也使得其他功能不再需要。該解決方案只呼叫
getValues一次,然后處理所有資料。根據需要隨意修改/調整腳本。
腳本:
function rateChange() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Rate Change");
var startRow = 3;
var endDateStartCol = 6;
var numRows = sheet.getLastRow() - startRow 1;
var data = sheet.getRange(startRow, endDateStartCol, numRows, 17).getValues();
return data.map(function (row) {
var [endMth, newEndMth, monthNum] = row.slice(0, 3);
endMth = new Date(endMth).getMonth();
newEndMth = endMth monthNum;
if (monthNum >= 12)
return [1];
else if (monthNum >= 1) {
var mth = row.slice(5);
var negVal = 0;
for (i = newEndMth; i > endMth; i--)
negVal = mth[i % 12];
return [negVal];
}
});
}
輸出:

筆記:
- 對于后一個自定義函式,您只需將其放在資料的第一行。然后它將填充它下面的所有行。
- 我在最后一行添加了一個樣本資料,該資料會延續到下一年,以檢查該函式是否正確計算了總值(它確實正確計算了明年,模 (
%) 很容易處理這種情況)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/384488.html
