web-dev-qa-db-ja.com

別のシートの日付列に基づいて1つのシートのカテゴリ列を合計する

次のようなシートTransactionsがあります。

+--------------+-------------+-------------+-----------+
|         Date |       Payee |    Category |    Amount |
+--------------+-------------+-------------+-----------+
|   29/03/2020 |     Walmart |   Groceries |   $100.00 |
+------------------------------------------------------+
|   27/02/2020 |      Costco |   Groceries |   $220.00 |
+------------------------------------------------------+
|   12/03/2020 |       Exxon |         Gas |   $350.00 |
+------------------------------------------------------+
|   05/01/2020 |    Petsmart |        Pets |    $50.00 |
+------------------------------------------------------+
|   28/03/2020 |       Shell |         Gas |   $125.00 |
+--------------+-------------+-------------+-----------+

ここで、別のシートで、毎月各カテゴリで費やしている金額を追跡したいと思います。私はそれを次のように見せたいです:

+-------------+-----------+-----------+-----------+
|    Category |   03/2020 |   02/2020 |   01/2020 |
+-------------+-----------+-----------+-----------+
|         Gas |           |           |           |
+-------------------------------------------------+
|   Groceries |           |           |           |
+-------------------------------------------------+
|        Pets |           |           |           |
+-------------+-----------+-----------+-----------+

したがって、最終的には、各列は次のようになります。

+-------------+-----------+-----------+-----------+
|    Category |   03/2020 |   02/2020 |   01/2020 |
+-------------+-----------+-----------+-----------+
|         Gas |   $475.00 |        $0 |        $0 |
+-------------------------------------------------+
|   Groceries |   $100.00 |   $220.00 |        $0 |
+-------------------------------------------------+
|        Pets |        $0 |        $0 |    $50.00 |
+-------------+-----------+-----------+-----------+

セルB2に次のクエリがありますが、機能しません。

=iferror(query(INDIRECT("Transactions!A2:D"), "Select A, B, C, D", "select Sum(D) where A >= date '"&TEXT(B$1,"yyyy-MM-dd")&"' and A <= date '"&TEXT(eomonth(B$1,0),"yyyy-MM-dd")&"' and C= '"&$A2&"' label Sum(D) ''"),0)

何が悪いのですか?

1
user698515

あなたのクエリは基本的に正しいです。小さな変更で動作します。

以下を使用して、下にドラッグしてから右にドラッグしてください。

=iferror(query(Transactions!$A$2:$D, "select Sum(D) where A >= date '"&TEXT(B$1,"yyyy-MM-dd")&"' and A <= date '"&TEXT(eomonth(B$1,0),"yyyy-MM-dd")&"' and C= '"&$A2&"' label Sum(D) ''"),0)

変更されたもの:

  1. クエリにINDIRECT関数は必要ありません。 $記号を使用してクエリ範囲をロックするだけです:Transactions!$A$2:$D
  2. select句を2回使用しました。一度だけ使用してください。
1
marikamitsos