• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:スプレッドシートでシートをまたいで計算したい)

スプレッドシートでシートをまたいで計算する方法

このQ&Aのポイント
  • Googleスプレッドシートで日報を作成する際、複数のシートをまたいで合計を計算したい場合の方法を紹介します。
  • sumSkicount関数を使用して、指定したセル範囲の合計を計算することができます。
  • しかし、現在のコードではうまく動かないようです。原因を特定し、修正する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1734/2604)
回答No.3

以下のようにしておくと =kusiSum("A1","始まりのシート") で終わりのシートを省略できます。 どちらにしても自動再計算はしてくれないみたいですが…。 function kusiSum(cell_no, start_name) { var objS=SpreadsheetApp.getActiveSpreadsheet(); var sheets = objS.getSheets(); var sum = 0; var add_flag = false; var My_sheet = objS.getActiveSheet().getName(); for(var i = 0; i < sheets.length;i++) { if(sheets[i].getName() == start_name){add_flag = true;} if(add_flag){ if(isNaN(sheets[i].getRange(cell_no).getValue())){ var value = parseInt(sheets[i].getRange(cell_no).getValue()); }else{ var value =sheets[i].getRange(cell_no).getValue(); } sum = parseInt(sum) + value; } if(sheets[i].getName() == My_sheet){break;} } return sum; }

その他の回答 (2)

  • kkkkkm
  • ベストアンサー率66% (1734/2604)
回答No.2

元の串刺しコードでしたら以下のように変更してみてはいかがでしょう。 IsNaNは数値だとFalseを返します。 if(isNaN(sheets[i].getRange(cell_no).getValue())){ var value = parseInt(sheets[i].getRange(cell_no).getValue()); }else{ var value = sheets[i].getRange(cell_no).getValue(); } もしくは if(isFinite(sheets[i].getRange(cell_no).getValue())){ var value = sheets[i].getRange(cell_no).getValue(); }else{ var value = parseInt(sheets[i].getRange(cell_no).getValue()); }

  • kkkkkm
  • ベストアンサー率66% (1734/2604)
回答No.1

各シートのA1に当日の数値、B1に当日+前日までの合計があるとして 合計(1シート目)現在の日までの合計表示 最終シートのB1 1日(2シート目)A1=1日目の数値 B1=1日目の数値 2日(3シート目)A1=2日目の数値 B1=1日のB1+A1 3日(4シート目)A1=3日目の数値 B1=2日のB1+A1 4日(5シート目)A1=4日目の数値 B1=3日のB1+A1 でいいのではないでしょうか。 シートが連続しているのでしたら function GET_SHEET_NAME() { var objSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var sheet_no =objSheet.getIndex()-2; return SpreadsheetApp.getActive().getSheets()[sheet_no].getSheetName(); } B1にそれぞれ =indirect(GET_SHEET_NAME() & "!B1")+A1 でいけそうな気がしますが、どうでしょう。

関連するQ&A

専門家に質問してみよう