Dynamiquement combiner plusieurs feuilles horizontalement dans Google Sheets

Combinez (fusionnez) des données provenant de plusieurs feuilles horizontalement dans Google Sheets peut ne pas être une tâche fréquemment requise, car cela ne contribue pas toujours à l’efficacité de la manipulation des données.

L’approche privilégiée consiste souvent à combiner plusieurs feuilles verticalement. Cependant, il existe des scénarios où la combinaison des feuilles horizontalement devient nécessaire. Par exemple, imaginez un fichier Google Sheets avec douze feuilles, représentant chacune des données pour les mois de janvier à décembre. La colonne A de toutes les feuilles contient les noms des employés dans le même ordre, tandis que la colonne B représente leur salaire brut mensuel, qui varie sur chaque feuille.

Dans de tels cas, il peut être nécessaire de combiner horizontalement les données des 12 feuilles dans une feuille principale. Cela facilite la manipulation des données et offre une vision globale de toutes les données en un seul endroit. La méthode la plus simple pour fusionner horizontalement plusieurs feuilles est de spécifier les plages dans la fonction HSTACK. Si vous préférez une approche plus dynamique pour combiner horizontalement plusieurs feuilles, vous pouvez utiliser une technique moderne qui implique la fonction REDUCE.

La méthode la plus rapide pour ajouter des données horizontalement

Nous ne pouvons pas continuer sans présenter nos données d’exemple car tout tourne autour d’elles.

Il y a cinq feuilles dans un fichier Google Sheets nommé Jan, Feb, Mar, Apr et Merged.

Nous allons combiner les données de la plage de cellules A1:B des quatre premières feuilles horizontalement dans la cinquième feuille.

La cinquième feuille est actuellement vide. Nous allons combiner horizontalement les données des quatre feuilles précédentes dans cette feuille.

La façon la plus rapide d’ajouter des données horizontalement est d’utiliser la fonction HSTACK.

Syntaxe : HSTACK(plage1, [plage2, …])

Insérez cette formule dans la cellule A1 de la feuille « Merged » (cinquième).

=SIERREUR(HSTACK(Jan!A1:B, Feb!A1:B, Mar!A1:B, Apr!A1:B))

Vous pouvez utiliser des plages ouvertes (par exemple, Jan!A1:B) ou des plages fermées (par exemple, Jan!A1:B6) dans la formule.

Si vous souhaitez importer uniquement une partie des données d’une feuille et les fusionner avec l’ensemble des données des autres feuilles, ne vous inquiétez pas ! Vous pouvez combiner plusieurs feuilles horizontalement avec un nombre inégal de lignes.

=SIERREUR(HSTACK(Jan!A1:B5, Feb!A1:B5, Mar!A1:B100, Apr!A1:B100))

La formule ci-dessus dans Google Sheets renverra cinq lignes à partir des deux premières feuilles et cent lignes à partir des deux dernières feuilles. Nous avons utilisé la fonction SIERREUR pour atténuer les erreurs qui peuvent survenir lors de la fusion de tables avec un nombre de lignes inégal.

Vous pouvez organiser les feuilles dans l’ordre souhaité dans la formule.

Combinez plusieurs feuilles horizontalement en faisant référence aux noms de feuilles dans une plage

En août 2022, Google Sheets a introduit un ensemble puissant de fonctions qui s’est depuis révélé être transformateur et révolutionnaire.

Une fonction notable de cet ensemble est REDUCE, qui sert de fonction d’aide LAMBDA. Son introduction a considérablement modifié notre façon d’interagir avec Google Sheets.

L’utilisation de LAMBDA est particulièrement importante pour faire référence à une liste de noms de feuilles (par opposition à une seule feuille) dans les formules.

Voici un guide sur la manière d’utiliser REDUCE pour combiner dynamiquement des données horizontalement à partir de plusieurs feuilles en fonction d’une liste de noms de feuilles dans une plage spécifiée.

Combinez dynamiquement plusieurs feuilles horizontalement en utilisant la fonction REDUCE

Nous pouvons utiliser la fonction REDUCE pour combiner dynamiquement plusieurs feuilles horizontalement.

De plus, vous pouvez l’utiliser pour combiner des données de la première feuille à la dernière feuille ou vice versa. Nous commencerons par la première à la dernière.

Supposons que la cinquième feuille soit vide, si vous avez la formule HSTACK mentionnée ci-dessus, veuillez la supprimer.

Entrez les noms de feuilles dans les cellules A1 à A4 de cette feuille (il y a quatre feuilles dans le classeur à partir desquelles nous voulons importer des données et les ajouter horizontalement).

Ensuite, insérez la formule REDUCE suivante dans la cellule B1.

=REDUCE(TOROW( ; 1), TOCOL(A1:A ; 1), LAMBDA(a, v, SIERREUR(HSTACK(a, INDIRECT(v&"!A1:B10")))))

Il ajoute les données de la plage A1:B10 en utilisant les noms de feuille saisis dans A1:A.

Cela implique que vous devez modifier A1:A et A1:B10 dans la formule pour l’adapter à votre liste contenant les noms de feuilles et la plage de données que vous souhaitez combiner.

Comment REDUCE combine-t-il les données horizontalement dans Google Sheets ?

Plongeons dans la syntaxe de la fonction REDUCE :

Syntaxe : REDUCE(valeur_initiale, tableau_ou_plage, lambda)

  • valeur_initiale : TOROW( ; 1)

La fonction TOROW renverra une cellule vide si elle est spécifiée comme TOROW( ; 0). En changeant 0 en 1, elle élimine cette cellule vide. Ainsi, elle répond à l’exigence de valeur_initiale pour REDUCE. Elle ne renvoie essentiellement rien.

  • tableau_ou_plage : TOCOL(A1:A ; 1)

Elle renvoie la liste des noms de feuilles en supprimant les cellules vides.

Dans la formule (à l’intérieur de lambda) :

  • a : nom de l’accumulateur.
  • v : chaque valeur (nom de feuille) issue de tableau_ou_plage.

La fonction REDUCE itère sur chaque nom de feuille dans tableau_ou_plage, en utilisant la fonction INDIRECT(v& »!A1:B10″). À chaque itération, le v représente Jan (Sheet1), Feb (Sheet2), Mar (Sheet3) et Apr (Sheet4).

Le résultat à chaque étape est stocké dans l’accumulateur, qui est ensuite empilé horizontalement à l’aide de l’HSTACK comme HSTACK(a, …). Cela explique la logique REDUCE derrière la combinaison dynamique de plusieurs feuilles.

Fusion horizontale de la dernière feuille à la première feuille

Voulez-vous ajouter des données de la dernière feuille à la première feuille ?

En d’autres termes, fusionnez les données des feuilles horizontalement dans l’ordre Apr, Mar, Feb et Jan, plutôt que Jan, Feb, Mar et Apr.

C’est simple avec la formule REDUCE ci-dessus. Au lieu d’utiliser HSTACK(a, v), utilisez HSTACK(v, a) comme suit.

=REDUCE(TOROW( ; 1), TOCOL(A1:A ; 1), LAMBDA(a, v, SIERREUR(HSTACK(INDIRECT(v&"!A1:B10"), a))))

Suppression de la première colonne répétée

L’un des problèmes auxquels vous pouvez être confronté lors de la fusion de données horizontalement est la répétition de l’une des colonnes, éventuellement la première contenant une description commune.

Dans mon exemple, comment pouvons-nous supprimer les occurrences multiples de la colonne « Nom » ?

La solution est assez simple.

N’incluez pas la première colonne dans la formule REDUCE. Je veux dire, remplacez v& »!A1:B10″ par v& »!B1:B10″.

Ensuite, utilisez la formule à l’intérieur d’un HSTACK et voilà.

=HSTACK(Jan!A1:A10, REDUCE(TOROW( ; 1), TOCOL(A1:A ; 1), LAMBDA(a, v, SIERREUR(HSTACK(a, INDIRECT(v&"!B1:B10"))))))

Une autre option consiste à encapsuler ma formule d’origine dans CHOOSECOLS ou QUERY pour extraire les colonnes spécifiques dont nous avons besoin des données des feuilles fusionnées.

Ressources

Ci-dessus, nous avons vu comment combiner des données horizontalement en utilisant une simple HSTACK ou en utilisant REDUCE, une approche dynamique. Voici quelques ressources qui traitent de sujets similaires.

  • Consolider des données provenant de plusieurs feuilles à l’aide d’une formule dans Google Sheets
  • Consolider uniquement la dernière ligne dans plusieurs feuilles dans Google Sheets
  • Comment combiner plusieurs feuilles dans Importrange et contrôler via une liste déroulante
  • SOMME.SI sur plusieurs feuilles dans Google Sheets
  • RECHERCHEV sur plusieurs feuilles dans Google Sheets
  • Comment inclure des feuilles futures dans les formules dans Google Sheets

Articles en lien