web-dev-qa-db-fra.com

Ajout de dates manquantes à Google Sheets

Je récupère des données de HubSpot vers Google Sheets via un connecteur tiers. J'ai un ensemble de données brutes sur la feuille 1, puis je tire certaines données de la feuille 1 vers d'autres feuilles avec la fonction QUERY.

Par exemple, sur la feuille 2, j'ai les dates et les valeurs des soumissions de formulaires sur notre site Web. Voici un exemple de sortie:

Date          Value
9/15/2019     1
9/16/2019     2
9/18/2019     1

Comme vous pouvez le voir, le 17 septembre est manquant car aucun formulaire n'a été soumis ce jour-là. Cependant, j'aimerais inclure des jours sans aucune soumission à la feuille. Voici la sortie souhaitée:

Date          Value
9/15/2019     1
9/16/2019     2
9/17/2019
9/18/2019     1

J'ai la fonction QUERY dans la feuille 2 A1 et elle doit y rester car les données brutes sur la feuille 1 sont automatiquement mises à jour quotidiennement. Si c'est possible, j'aimerais avoir la sortie souhaitée dans la colonne F de la feuille 2.

Quelqu'un peut-il m'aider avec celui-ci?


Éditer:

screenshot&example

Vous pouvez voir ma QUERY actuelle sur la capture d'écran ci-dessus. Dans cette QUERY, la feuille de contacts est la feuille de données brutes. Les colonnes A: D sont le résultat de QUERY et les colonnes G: J sont le résultat que j'aimerais obtenir. Dans mon exmaple (colonnes G: J), j'ai mis en évidence deux lignes. Comme vous pouvez le voir dans les colonnes A: D, il existe désormais des données du 9/9/2019 et du 9/7/2019. Ajouter les dates manquantes comme celle-ci est ce que j'essaie de réaliser.

2
Mike

Il semble que vous recherchiez une solution à formule unique, mais ils pourraient être difficiles à comprendre et à maintenir, surtout si vous n'êtes pas familier avec le fonctionnement des fonctionnalités associées à Google Sheets.

Fonctionnalités associées

  1. Rendez-vous. Google Sheets gère les dates comme des numéros de série, où un jour est une unité.
  2. En raison de la fonctionnalité ci-dessus, nous avons pu créer une liste de dates en utilisant ROW(A:A) et en appliquant un format de date (cliquez sur le menu Format> Nombre puis le format de date souhaité).
  3. Tableaux. Recherchez l'article d'aide Utilisation des tableaux dans Google Sheets sur https://support.google.com/docs . Veuillez noter que si votre feuille de calcul utilise la virgule , Comme séparateur décimal, au lieu de l'utiliser comme séparateur de colonne, utilisez une barre oblique inverse \.
  4. QUERY. L'instruction SQL utilise la notation A, B, C pour le nom des colonnes lorsqu'une référence est utilisée comme premier argument, mais elle utilise la notation Col1, Col2, Col3 Pour noms de colonnes lorsqu'un tableau est utilisé comme premier argument.

Alternative simple

  1. Supprimez les lignes vides de Sheet1.
  2. Ajoutez une liste de dates aux données source de Sheet1. Exemple

    =ArrayFormula({Sheet1!A:B;Sheet1!A2+ROW(A1:A30),IFERROR(ROW(A1:A30)/0,)})
    
  3. Sur votre formule QUERY, utilisez la plage résultante de la formule ci-dessus comme premier argument.

Si vous ne voulez vraiment ajouter que les dates manquantes, au lieu de la formule ci-dessus, utilisez:

=ArrayFormula(
  FILTER(
    {Sheet1!A2+ROW(A1:A30),IFERROR(ROW(A1:A30)/0,)},
    ISNA(MATCH(Sheet1!A2+ROW(A1:A30),Sheet1!A:A,0))
  )
)

Alternative "complexe"

  1. Supprimez les lignes vides de Sheet1.
  2. Utilisez {Sheet1!A:B;Sheet1!A2+ROW(A1:A30),IFERROR(ROW(A1:A30)/0,))} comme premier argument de QUERY, sur le deuxième argument (instruction SQL) changez les noms de colonnes de notation A, B, C en notation Col1, Col2, Col3. La formule résultante ressemblera à ceci:

    =ArrayFormula(
      QUERY(
        {Sheet1!A1:B30;Sheet1!A2+ROW(A1:A30),IFERROR(ROW(A1:A30)/0,)},
        "SELECT Col1,Col2"
      )
    )
    

    ou

    =ArrayFormula(
      QUERY(
        FILTER(
          {Sheet1!A2+ROW(A1:A30),IFERROR(ROW(A1:A30)/0,)},
          ISNA(MATCH(Sheet1!A2+ROW(A1:A30),Sheet1!A:A,0))
        ),
       "SELECT Col1,Col2"
      )
    )
    

Remarques

  • Par souci de simplicité, Sheet!A2+ROW(A1:A30) est utilisé pour ajouter 30 dates après la première date, si vous en avez besoin de plus, utilisez une référence plus élevée.

  • Si sur votre instruction SQL vous utilisez la clause GROUP BY, Utilisez la première formule comme premier argument QUERY.

  • Au lieu de A1:A30, Nous pourrions utiliser A:A Mais nous utilisons également le moyen de limiter la taille de cette référence. Une alternative consiste à utiliser ARRAY_CONSTRAIN.

En relation

2
Rubén