J'ai une feuille Google liée à un formulaire qui recueille les réponses de trois personnes différentes sur le même sujet en utilisant le même formulaire et en les éditant trois fois. Cela crée une feuille qui contient trois colonnes indiquant où se trouvent les trois personnes.
J'ai besoin de produire une vue / requête qui prend ces trois colonnes et les place «en dessous» les unes des autres, et non les unes à côté des autres. Dans une base de données, j'aurais fait quelque chose comme la requête ci-dessous, j'ai appelé ma «feuille» tblMain et indiqué les quatre colonnes pertinentes (j'ai également besoin de l'ID du sujet).
tblMain:
ID RALocation RBLocation RCLocation
Requete:
Select ID, RALocation as Location, 'RA' as Role from tblMain
Union
Select ID, RBLocation as Location, 'RB' as Role from tblMain
Union
Select ID, RCLocation as Location, 'RC' as Role from tblMain
Est-ce que quelqu'un sait s'il existe un moyen de le faire dans Google Sheets? Cela ne me dérange pas de construire plus d'une feuille et de les combiner à la fin, mais je suis un peu coincé sur la façon de procéder.
Réponses:
J'offre deux versions, selon que les cellules vides doivent être conservées. L'idée de base est la même:
CHAR
).JOIN
commande pour chacune des trois colonnes.SPLIT
la chaîne concaténée par le même caractère.TRANSPOSE
le résultat.Par exemple:
où pour rejoindre / fractionner, j'ai choisi le caractère
CHAR(57344)
, qui est destiné à un usage privé et ne doit donc pas être présent dans une entrée valide.La formule ci-dessus supprime les entrées vides , car c'est ce qui
SPLIT
fait. Cela peut être pratique si vos données ne comportent pas de blancs: vous évite de suivre où se trouve la dernière ligne des données. Mais d'autres fois, les blancs doivent être conservés.Pour préserver les blancs, je suis la réponse de Jacob Jan Tuinstra, sauf que j'ai utilisé un autre Unicode à usage privé au lieu de l'espace (qui sait, peut-être que vous avez des cellules qui ne contiennent qu'un espace et que vous souhaitez les conserver). Cela implique deux étapes supplémentaires: après avoir tout joint comme avant, j'utilise
SUBSTITUTE
pour remplacerCHAR(57344)
parCHAR(57344)&CHAR(57345)
, puis diviser comme avant et remplacerCHAR(57345)
par une chaîne vide.Le résultat complet ressemble à ceci (notez que maintenant je spécifie où se trouve la dernière ligne de données):
Une autre mise en garde: les chaînes dans Google Sheets ne peuvent pas dépasser 50000 caractères. Si vos données sont trop volumineuses pour que l'approche basée sur des chaînes fonctionne, utilisez un script ( celui-ci est un bon point de départ).
la source
Il est possible de faire une union dans Google Spreadsheet très facilement de nos jours avec cette formule:
Voir plus d'informations dans l'aide de Google Docs: Utilisation de tableaux dans Google Sheets
la source
Réponse courte
Google Sheets est un outil très puissant qui propose plusieurs alternatives pour obtenir un résultat similaire à UNION-SELECT.
Alternatives
Tableaux intégrés
Une alternative à l'utilisation de SPLIT-TRANSPOSE-JOIN-CHAR est d'utiliser des tableaux intégrés. Un avantage de cette méthode est qu'elle ne nécessite pas de construire / déconstruire des chaînes, donc la limite du nombre de caractères n'est pas pertinente.
Filtration
Ce qui précède peut être utilisé en combinaison avec FILTER () pour les cas qui nécessitent un filtrage pour avoir un comportement similaire à UNION-SELECT. Exemple
Peut également être utilisé en combinaison avec QUERY () mais ses résultats incluent une ligne d'en-têtes. Pour en savoir plus sur la suppression des en-têtes, voir Supprimer la ligne à la suite de la requête Google Spreadsheets .
Comment créer une colonne de valeurs
Utilisez TRANSPOSE-SPLIT-REPT pour créer une colonne de valeurs.
QUERY () pourrait également être utilisé pour créer une colonne de valeurs, mais la suppression de la ligne des en-têtes pourrait rendre la formule plus complexe. Utilisez-le uniquement si les limitations de longueur de chaîne posent problème.
Solution utilisant des baies intégrées et TRANSPOSE-SPLIT-REPT
Supposons que la plage tblMain soit A1: D7, où A1: D1 sont les en-têtes de table et que les données sont en A2: D7.
Références
Ajout de tableaux de feuilles de calcul Google - StackOverflow
la source