スプレッドシート上の予約名簿の管理で、日付の過ぎたものを別シートに移動するスクリプトを下記の通り実行しましたが、そうすると、この名簿から日付、時間の条件でsumif関数で合計人数を計算している表に、正しく人数が拾わなくなります。
原因が分からずに悩んでおります。
よろしくお願い致します。
1 2function SortReservation() { 3 4 //データー範囲 5 var contents = sheet.getRange(2, 1, lastrow, 21).getValues(); 6 7 var data = []; //未来の予約 8 var reservation = [];//過去の予約 9 //順に予定を作成 10 for(i = 0; i <= lastrow - 2; i++) { 11 //日程取り出し 12 var today = new Date(Date.now()); 13 var TMonth = today.getMonth(); 14 var Tdate = today.getDate(); 15 var Reservationdate = new Date(contents[i][3]); 16 var Rmonth = Reservationdate.getMonth(); 17 var Rodate = Reservationdate.getDate(); 18 19 //日程が昨日以前ならdata配列に入れる 20 //来月 21 if (Rmonth > TMonth) { 22 data.push(contents[i]); 23 //今月で今日以降 24 }else if(Rmonth == TMonth && Rodate >= Tdate ){ 25 data.push(contents[i]); 26 //その他はreservations配列に入れる 27 }else{ 28 reservation.push(contents[i]); 29 } 30 } 31 32 //過去予約一覧に貼付 33 if(reservation.length){ 34 sheet2.getRange(sheet2.getLastRow()+1, 1, reservation.length, 21).setValues(reservation); 35 }else if(!reservation.length){ 36 } 37 //全て削除して本日以降の予約を予約一覧に貼付 38 if(data.length){ 39 sheet.deleteRows(2,lastrow); 40 sheet.getRange(2, 1, data.length, 21).setValues(data); 41 }else if(!data.length){ 42 } 43 44 //貼付け済みデータを日付/時間で並び替え 45 sheet.getRange(2, 1, sheet.getLastRow(), 21).sort(5); 46 sheet.getRange(2, 1, sheet.getLastRow(), 21).sort(4); 47 sheet2.getRange(2, 1, sspast.getLastRow(), 21).sort(5); 48 Sheet2.getRange(2, 1, sspast.getLastRow(), 21).sort(4); 49} 50 51
sumifs関数は今日の日付、時間で指定(どちらも指定の値はセルから参照)
スクリプトで再入力しているため、時間や日付として認識されないのでしょうか?
GAS実行前(過去の予約もシート1にある状態)は合計は正しく計算されます。
ご教示のほどよろしくお願い致します。
[2021/03/28 14:33時点の投稿内容に対する質問]
・sheet、sheet2、sspast の各シートの具体的な構造(何を意味するシートでどこにどのようなデータが入っているのか)を記載してください。(各シートの画面キャプチャ等)
(※この続きにコメントするのではなく、質問文を編集するボタンを押して、必ず質問欄に追記してください)
・「この名簿から日付、時間の条件でsumif関数で合計人数を計算している表」とは、どのシートの、どのセルに、どのような計算式が入っているのでしょうか。これも具体的に記載してください
(これも1番目と同様に、このコメントの続きにコメントするのではなく、質問文を編集して質問欄に追記してください)
ご指摘ありがとうございます。
よろしくお願い致します。
キャプチャ画像を見る限りは、SUMIFで集計しているシートの条件に使ってる時刻が ":"が全角になっているような。:が全角だとただの文字列として扱われると思いますが、このキャプチャの通りの時刻の表示でスクリプト実行前は集計できてましたか?
コメントありがとうございます。
はい。スクリプト実行前・実行後で数字が変わってしまいます。
回答4件
あなたの回答
tips
プレビュー