Je compile une base de données d'informations sur l'adresse de l'entreprise, y compris le personnel clé de chaque entreprise. La feuille de calcul Google dont j'ai hérité pour ce projet comprend une colonne pour «personnel clé» (dans la colonne B), avec plusieurs noms de personnel clé répertoriés dans la même cellule, séparés par des sauts de ligne (c.-à-d. CHAR (10)). Il y a une entreprise par ligne. Le nombre de lignes dans la cellule «personnel clé» varie ligne par ligne. Ma feuille initiale ressemble à ceci:
J'ai besoin de faire ce qui suit pour optimiser cette feuille:
- divisez chaque cellule de «portée clé» multiligne de sorte que chaque nom de portée clé apparaisse sur sa propre ligne. Cela nécessite que de nouvelles lignes soient insérées sous la ligne d'origine.
- dupliquer les données de toutes les autres cellules de la ligne d'origine (c'est-à-dire des colonnes A et C: E), de sorte que chaque nouvelle ligne contienne les données complètes de chaque entreprise
- J'ai besoin d'un processus automatisé - j'aurai environ 1000 entreprises à traiter, je ne peux donc pas le faire avec des étapes manuelles
La feuille devrait alors ressembler à ceci:
L'utilisation =TRANSPOSE(SPLIT(B1,CHAR(10)))
ne fait évidemment que partie du chemin - elle n'insère pas de nouvelles lignes et ne duplique pas les entrées de colonne environnantes. Toute aide acceptée avec reconnaissance!
la source
Réponses:
Tout d'abord, désolé pour la réponse tardive, mais j'ai une solution avec laquelle vous pouvez travailler.
Code
Expliqué
Le script évalue chaque ligne, et en particulier la deuxième colonne de chaque ligne (dans les tableaux JavaScript sont basés sur zéro, donc la colonne 2 correspond à l'index 1 du tableau). Il divise le contenu de cette cellule en plusieurs valeurs et utilise le
"\n"
délimiteur as (saut de ligne). Après cela, il ajoute les informations existantes à un tableau et n'ajoute que les résultats individuels, lorsqu'il atteint l'index 1 (k == 1)
. La ligne nouvellement préparée est ensuite ajoutée à un autre tableau, qui est renvoyée pour afficher le résultat.Capture d'écran
Les données
résultat
Exemple
J'ai créé un exemple de fichier pour vous: des cellules multilignes dans de nouvelles lignes .
Ajoutez le script sous Outils> Éditeur de script et appuyez sur le bouton Enregistrer.
la source
Une solution reproductible aura besoin d'un script.
Mais pour un effort ponctuel, vous pouvez simplement utiliser
=SPLIT(B3,CHAR(10))
. Cela vous donnera tous les noms de la personne dans des colonnes d'assistance côte à côte, comme ceci:Copy / Paste-special, valorise le contenu de la colonne d'assistance.
Et pour chaque colonne d'assistance qui est utilisée (si tout va bien pas trop, parce que j'espère que vous n'avez pas trop de personnes dans une même entreprise) copiez-collez manuellement le bloc de lignes à la fin du bloc actuel. (Ce n'est pas une bonne description, mais vous obtenez la dérive.)
la source
Pour les personnes qui pourraient ne pas comprendre immédiatement comment utiliser la fonction personnalisée utile dans la réponse acceptée :
Vous avez besoin de plusieurs feuilles, dans l'exemple les deux feuilles sont
DATA
etRESULT
. LaRESULT
feuille est vide jusqu'à ce que la requête soit exécutée. Vous pouvez voir la requête qui fait référence à laDATA
feuille dans la capture d'écran de Jacob.Vous devrez très probablement modifier la valeur de comparaison de la
k
ligne 8 qui fait référence à la colonne où vos données à analyser doivent être trouvées. Le même nombre devra entrer dans la 2e valeur du tableau à la ligne 4.Vous devrez peut-être modifier le délimiteur de la ligne 4 qui est actuellement
\n
Pour rendre tout cela un tout petit peu plus facile, j'ai pris le même code et extrait le délimiteur et la colonne cible dans des variables définies en haut de la fonction. Comme Jacob mentionne le nombre de colonnes cible commence par 0 comme premier nombre.
Les références
la source