セルD1に名前がある従業員がテーブルを参照して欠席した時間の合計を取得したい。テーブルは、Sep
という名前のシートにあります。 Word Sep
は、A97で入力された文字列です。次の式を使用して、ワークブック内でクエリを実行できます。
=QUERY(indirect(concatenate($A97,"!A2:$F")), "Select sum(F) where A = '"&$D$1&"' label sum(F)'' ")
IMPORTRANGE式が機能していることも確認しました。 (私のStack Exchangeアカウントは新しいため、この投稿に3つ以上のリンクを追加することはできません。したがって、実際の数式で完全なリンクを正しく使用していても、以下の数式で完全なリンクを削除しました。):
=importrange("1033hNIUutMjjdwiZZ40u59Q8DvxBXYr7pcWyRRHAdXk",concatenate($A97,"!A2:$F"))
しかし、私がそれをすべて一緒にしようとすると、エラーが発生します:
エラー関数QUERYパラメーター2のクエリ文字列を解析できません:NO_COLUMN:F
これは私が使用しようとしている式です:
=Query(importrange("https://docs.google.com/spreadsheets/d/1033hNIUutMjjdwiZZ40u59Q8DvxBXYr7pcWyRRHAdXk",concatenate($A97,"!F2:$F300")), "Select sum(F) where A = '"&$D$1&"' label sum(F)'' ")
Google Spreadsheets へのリンクはこちらです。
必要なデータを取得する方法に関する3つのバリエーションを含むドキュメントをドキュメントに追加しました...
セルのみを取得するには、最初の式から「選択」Col1を削除し、インデックスでラップして、関心のある行のみを取得する必要があります。
=index(Query(importrange("https://docs.google.com/spreadsheets/d/1033hNIUutMjjdwiZZ40u59Q8DvxBXYr7pcWyRRHAdXk",$A97&"!A2:$F"), "Select sum(Col6) where (Col1='"&$D$1&"')"),2,)
質問で質問したように、列Dをポイントすることで非常に具体的にするには、次のようにします。
=Query(importrange("https://docs.google.com/spreadsheets/d/1033hNIUutMjjdwiZZ40u59Q8DvxBXYr7pcWyRRHAdXk",$A97&"!A2:$F"), "Select Col1,sum(Col6) where (Col1='"&$D$1&"') group by Col1")
実際に合計値を持つ一意の名前ですべてのデータを集約する小さなテーブルが必要な場合は、クエリ内でピボットまたはグループ化を使用できます。
グループ化の場合:
=Query(importrange("https://docs.google.com/spreadsheets/d/1033hNIUutMjjdwiZZ40u59Q8DvxBXYr7pcWyRRHAdXk",$A97&"!A2:$F"), "Select Col1,sum(Col6) where Col1<>''group by Col1",)
ピボットの場合(私のお気に入り):
=Query(importrange("https://docs.google.com/spreadsheets/d/1033hNIUutMjjdwiZZ40u59Q8DvxBXYr7pcWyRRHAdXk",$A97&"!A2:$F"), "Select sum(Col6) where Col1<>'' PIVOT Col1")
ヘッダーを上に追加し、クエリを次のように水平方向に転置します。
={"Employee","Hours";TRANSPOSE(Query(importrange("https://docs.google.com/spreadsheets/d/1033hNIUutMjjdwiZZ40u59Q8DvxBXYr7pcWyRRHAdXk",$A97&"!A2:$F"), "Select sum(Col6) where Col1<>'' PIVOT Col1"))}