亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Google Apps 腳本 - 從動態更改的選項卡名稱中查找范圍總和

Google Apps 腳本 - 從動態更改的選項卡名稱中查找范圍總和

慕虎7371278 2023-07-20 10:21:01
我有 10 個選項卡,每個選項卡的名稱隨著工作完成而不斷變化。所以我使用數組來查找工作表。主工作表需要顯示所有 10 個選項卡 AF3:AF 中同一列的值此代碼只能返回 1 個單元格的值,而不是范圍。function MasterTotals() {var ss = SpreadsheetApp.getActiveSpreadsheet();var sheet1 = ss.getSheetByName('Master Sales');var sheet = ss.getSheets()[5,6,7,8,9,10,11,12,13,14];var value = sheet.getRange('AF3:AF').getValue();sheet1.getRange('AM2:AM').setValue(value); so [5] should return answer to AM2 - [6] should return answer to AM3 etc etcError returned is **cannot read property getRange**Appreciate any help on what I am not seeing
查看完整描述

2 回答

?
慕田峪9158850

TA貢獻1794條經驗 獲得超7個贊

解釋:

  • 您的目標是迭代從第 6 個工作表(索引 5)到第 15 個工作表(索引 14)的工作表。記住getSheets()[0]是第一張。

  • 對于每張工作表,您想要獲取 range 中值的總和AF3:AF。為了獲得總和,我將2D 數組展平為 1D,過濾掉空單元格,然后使用reduce求總和。

  • 最后我們將數據粘貼回工作表Master Sales。

解決方案:

function myFunction() {

? const ss = SpreadsheetApp.getActive();

? const sheet1 = ss.getSheetByName('Master Sales');

? const sheets = ss.getSheets().slice(5,15);

? const data = [];

? sheets.forEach( sh =>?

? data.push([sh.getRange('AF3:AF').getValues().flat().filter(r=>r!='').reduce((a,b)=>a+b)])

?);?

? sheet1.getRange(2,39,data.length,1).setValues(data); //AM

}

邊注:


在 javascript 中對數組進行切片的正確方法是使用slice:


const sheets = ss.getSheets().slice(5,15);


查看完整回答
反對 回復 2023-07-20
?
森林海

TA貢獻2011條經驗 獲得超2個贊

不完全是一個答案。只是這一行看起來不太好:

var value = sheet.getRange('AF3:AF').getValue();
sheet1.getRange('AM2:AM').setValue(value);

不應該在那里getValues()setValues()不是getValue() setValue()?由于范圍包括許多單元格。

getValue()setValue()僅處理范圍的一個(第一個)單元格。


查看完整回答
反對 回復 2023-07-20
  • 2 回答
  • 0 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號