Utilisation de RegexReplace pour mettre des nombres entre parenthèses et son utilisation dans Query

Avec la fonction RegexReplace, nous pouvons facilement mettre des nombres entre parenthèses dans une chaîne de texte dans Google Sheets. Cela peut être utilisé pour formater les chaînes contenant des nombres. De plus, il existe une utilisation importante pour ajouter des parenthèses autour des nombres dans Google Sheets.

Comment ajouter des parenthèses autour des nombres en utilisant la fonction RegexReplace dans Google Sheets?

Dans mon exemple ci-dessous, j’utilise des parenthèses pour entourer les nombres. Vous pouvez également utiliser des crochets.

REGEXREPLACE(text, "(d+)", "($1)")

Exemple 1:

Le contenu de la cellule B2 est le texte « Achat 100, Dommage 50 ». La formule RegexReplace suivante dans la cellule B3 renverra le résultat: « Achat (100), Dommage (50) ».

=REGEXREPLACE(B2,"(d+)", "($1)")

Pour remplacer les parenthèses autour des nombres par des crochets, utilisez la formule suivante.

=REGEXREPLACE(B2,"(d+)", "[$1]")

Exemple 2:

Cette fois, la valeur dans la cellule B2 est le nombre 100.

Cette formule ci-dessus ne fonctionnera pas car le contenu de la cellule B2 ne contient pas de chaîne de texte!

Vous devez utiliser B2& » » au lieu de B2 pour convertir le nombre dans la cellule B2 en texte car RegexReplace est une fonction de texte et ne prend que du texte comme argument 1.

=REGEXREPLACE(B2&"", "(d+)", "[$1]")

De cette manière, nous pouvons utiliser la fonction RegexReplace pour mettre des nombres entre parenthèses dans Google Sheets.

J’ai trouvé une utilisation importante, ou nous pouvons dire une utilisation réelle, de cette formule dans la fonction Query. Allons-y.

Utilisation de RegexReplace pour mettre des nombres entre parenthèses et son utilisation dans la clause SELECT de la requête Query

Vous venez d’apprendre comment utiliser la fonction RegexReplace pour mettre des nombres entre parenthèses (crochets) dans Google Sheets.

Maintenant, voyons comment l’utiliser dans la clause SELECT de Query pour référencer dynamiquement les colonnes dans les fonctions d’agrégation de Query.

Fonction Query ‘query’ – Non-dynamique

Regardez l’image ci-dessous pour les données d’exemple.

Avec l’aide de la fonction d’agrégation Sum dans Query, nous pouvons additionner les colonnes C, D et E (colonnes 2, 3 et 4 dans la plage B1:E).

=QUERY({B1:E},"Select Sum(Col2),Sum(Col3),Sum(Col4)",1)

Cette formule Query normale a un inconvénient!

Pour le savoir, insérez une colonne avant la colonne E. Seule la plage B1:E (données) sera automatiquement ajustée dans la formule.

La formule ‘query’ est en fait saisie en tant que chaîne (entre guillemets). Elle ne s’ajustera donc pas lorsque la plage ‘data’ change.

Ici, je vais rendre l’argument ‘query’ dynamique à l’aide de notre formule RegexReplace ci-dessus.

Fonction Query ‘query’ – Dynamique

Voici la syntaxe non dynamique de ‘query’.

« Select Sum(Col2),Sum(Col3),Sum(Col4) »

A l’aide de la formule Sequence ci-dessous, nous pouvons générer les numéros de colonne à additionner de manière dynamique.

=sequence(1,columns(C1:E1),2)

La formule Sequence ci-dessus dans la cellule G1 s’ajuste en fonction des nouvelles colonnes dans la plage.

Une fois de plus, voyons la syntaxe de la formule RegexReplace qui met des nombres entre parenthèses dans Google Sheets. La voici.

REGEXREPLACE(text, "(d+)", "($1)")

Dans cette formule, nous devons remplacer/alimenter l’argument ‘text’ avec la formule Sequence ci-dessus. Mais la sortie de la formule Sequence est un nombre à plusieurs colonnes. Donc cela ne fonctionnera pas. Alors?

Comme mentionné dans l’exemple 2, nous devons utiliser & » » à la fin de la séquence.

=REGEXREPLACE(sequence(1,columns(C1:E1),2)&"","(d+)", "($1)")

Ensuite, enveloppez-le avec ArrayFormula car il y a un tableau utilisé comme ‘text’ dans RegexReplace.

=ArrayFormula(REGEXREPLACE(sequence(1,columns(C1:E1),2)&"","(d+)", "($1)"))

Nous avons ajouté des parenthèses autour des nombres. Je modifie légèrement la formule.

=ARRAYFORMULA(REGEXREPLACE(sequence(1,columns(C1:E1),2)&"","(d+)", "Sum(Col$1)"))

Ensuite, joignez ces sorties en utilisant TextJoin.

=TEXTJOIN(",",TRUE,ARRAYFORMULA(REGEXREPLACE(sequence(1,columns(C1:E1),2)&"","(d+)", "Sum(Col$1)")))

Maintenant, finalement dans la formule Query, je remplace ‘query’ par la formule ci-dessus.

=QUERY({B1:E},"Select "&TEXTJOIN(",",TRUE,ARRAYFORMULA(REGEXREPLACE(sequence(1,columns(C1:E1),2)&"","(d+)", "Sum(Col$1)"))),1)

J’espère que vous avez pu apprendre l’utilisation de RegexReplace pour mettre des nombres entre parenthèses et l’une de ses utilisations réelles à l’aide de Query.

Articles en lien