質問: 現在Googleスプレッドシートを使い他のスプレッドシートから 名前を参照して集計をしているのですが、日付と名前をを条件抽出をしたいですが やり方はわかりません。 現在の名前での抽出するための関数がこちらになります。 ``` =iferror(sum(QUERY(IMPORTRANGE("スプレッドシートキー","タブ名!A:L"),"select Col集計対象列番号 where Col名前列番号 ='"&担当セル番号&"'",1)),0) ``` 参照先のスプレッドシートには タイトル:4月集計報告表 日---担当-----集計項目 1 | A 3 | 1 | B 4 | 4 | A 1 | 5 | A 0 | 7 | C 5 | 8 | A 6 | 9 | C 2 | 9 | B 1 | このような表記です。 ※日の列は4/1なら1と表記されています。 これが約40シートあります。 上記関数だと現在の集計は タイトル:4月集計まとめ 担当---集計合計---集計合計---集計合計---約40行---合計 A | 10 B | 5 C | 7 D | 0 E | 0 F | 0 G | 0 一覧表にまとめられます。(月間) ![![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/9ffe21fe70eee58a4114538540314837.png)](e738446c8c1175c805d7f293ec325b6a.png) これを日付条件を付けて集計を取りたいです。 日付の条件を付ける(正確には日付ではなく1~7の数字) タイトル:4月1週(1~7)まとめ 担当---集計合計---集計合計---集計合計---約40行---合計 A | 4 B | 4 C | 5 D | 0 E | 0 F | 0 G | 0 上記画像のように週間一覧表を自動集計をしたいです。 以前同じような質問させていただきましたら > > =IFERROR(QUERY(IMPORTRANGE("スプレッドシートキー","範囲"),"select Col2,sum(Col3) where Col1>=1 and Col1<=7 group by Col2 label sum(Col3) ''"),"") > > > 1,7をセル参照でやりたい場合は、 > > > =IFERROR(QUERY(IMPORTRANGE("スプレッドシートキー","範囲"),"select Col2,sum(Col3) where Col1>="&参照セル&" and Col1<="&参照セル&" group by Col2 label sum(Col3) ''"),"") > > > と回答を頂いたのですが、 こちらだと対象の項目しか表示されることが無く、 対象結果の転載という感じでした。なので都度タブを制作し、一覧表にsumifを使わなくてはなりません。この方法もいいのですが、なかなか工数のかかるもので、更にスプレッドシートがかなり 重くなります。 集計先の一覧表にある担当を参照させ、条件に合ったもの(1~7日)を合計して 反映させ、それ以外は0として返すということをしたいです。
回答: 以前回答した者で恐縮ですが、 たとえばC列4行目から始まるなら、セルC4にこの式を入れます。 =IFERROR(ARRAYFORMULA(VLOOKUP(A4:A,QUERY(IMPORTRANGE("スプレッドシートキー","シート名!A1:C"),"select Col2,sum(Col3) where Col1>=1 and Col1<=7 group by Col2"),2,FALSE)),0) 氏名が空白のセルがあり、その対応値として0が入るのを嫌うならもう少し手を加えます。 =ARRAYFORMULA(IF(A4:A<>"",IFERROR(ARRAYFORMULA(VLOOKUP(A4:A,QUERY(IMPORTRANGE("スプレッドシートキー","シート名!A1:C"),"select Col2,sum(Col3) where Col1>=1 and Col1<=7 group by Col2"),2,FALSE)),0),"")) ARRAY式なので1式だけで下方に全部効きます。 予め氏名がA列に固定されている状況なら上記の回答ができたのですがその辺が曖昧だったような感じなので前回は不十分な回答になってしまっていたかもしれません。 なお、事前にIMPORTRANGEのアクセス許可を済ませてから式を入れます(その辺はご存知だとは思いますが念のため)。