J'ai une feuille, Transactions
, cela ressemble à ceci:
+--------------+-------------+-------------+-----------+
| 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 |
+--------------+-------------+-------------+-----------+
Maintenant, dans une autre feuille, je tiens à garder une trace de combien je passe dans chaque catégorie tous les mois. Je veux que ça ressemble à ceci:
+-------------+-----------+-----------+-----------+
| Category | 03/2020 | 02/2020 | 01/2020 |
+-------------+-----------+-----------+-----------+
| Gas | | | |
+-------------------------------------------------+
| Groceries | | | |
+-------------------------------------------------+
| Pets | | | |
+-------------+-----------+-----------+-----------+
Donc, à la fin, chaque colonne devrait ressembler à ceci:
+-------------+-----------+-----------+-----------+
| Category | 03/2020 | 02/2020 | 01/2020 |
+-------------+-----------+-----------+-----------+
| Gas | $475.00 | $0 | $0 |
+-------------------------------------------------+
| Groceries | $100.00 | $220.00 | $0 |
+-------------------------------------------------+
| Pets | $0 | $0 | $50.00 |
+-------------+-----------+-----------+-----------+
J'ai la requête suivante dans la cellule B2, mais cela ne fonctionne pas:
=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)
Qu'est-ce que je fais mal?
Votre requête est essentiellement correcte. Cela fonctionnera avec des altérations mineures.
Veuillez utiliser ce qui suit et faites glisser vers le bas, puis à droite:
=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)
Qu'est ce qui a changé:
INDIRECT
dans votre requête. Il vous suffit de verrouiller la plage de requêtes en utilisant le $
signer: Transactions!$A$2:$D
select
deux fois. Il devrait être utilisé juste une fois.