[英]How can I sum the values of cells in a row more efficiently?
您好,我已經搜索並嘗試了很長時間,但我就是無法得到它。 在圖片上你可以看到我的谷歌表格。
我只想將<= 10的行中的所有數字相加。
如何從下面簡化代碼? 有人有想法嗎? 非常感謝!
function calculationFirstColumn() { var sheet = SpreadsheetApp.getActiveSheet(); var originalData = sheet.getRange(2, 2, sheet.getLastRow() -1, 1).getValues(); var filteredItems = originalData.filter(function(x){return x==1}).length; var filteredItems2 = originalData.filter(function(x){return x==2}).length; var filteredItems3 = originalData.filter(function(x){return x==3}).length; var filteredItems4 = originalData.filter(function(x){return x==4}).length; var filteredItems5 = originalData.filter(function(x){return x==5}).length; var filteredItems6 = originalData.filter(function(x){return x==6}).length; var filteredItems7 = originalData.filter(function(x){return x==7}).length; var filteredItems8 = originalData.filter(function(x){return x==8}).length; var filteredItems9 = originalData.filter(function(x){return x==9}).length; var filteredItems10 = originalData.filter(function(x){return x==10}).length; var total = filteredItems+filteredItems2+filteredItems3+filteredItems4+filteredItems5+ filteredItems6+filteredItems7+filteredItems8+filteredItems9+filteredItems10; sheet.getRange("B18").setValue(total); }
您不需要使用過濾器,而是使用循環和條件語句的組合:
function calculationFirstColumn() {
var sheet = SpreadsheetApp.getActiveSheet();
var originalData = sheet.getRange(2, 2, sheet.getLastRow() -1, 1).getValues();
var total = 0;
for (var i = 0; i < originalData.length; i++){
if(originalData[i][0] <= 10){
total += originalData[i][0];
}
Logger.log(total);
}
sheet.getRange("B18").setValue(total);
}
像這樣的事情真的需要腳本嗎?
=SUMIF(B2:B,"<=10",B2:B)
@ziganotschka謝謝! 你的最后一個答案有效。 但我仍然有一個理解問題。
原始數據。 要評估的區域明確定義,其中沒有空單元格。 那為什么這個 function 需要指令呢?
if(originalData[i][0] <= 10 /*&& originalData[i][0] !=''*/){ total ++; }
如果沒有此附加行,此 function 計數哪些單元格?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.