Dissocier des cellules Excel empilées ou analyser du texte libre pour générer plusieurs lignesNous rencontrons tous plus ou moins ce problème : un tableau Excel joliment formaté, sans aucune considération pour son analysabilité.
Dans la cellule de texte libre, cela ressemble à ceci :
m/d : texte [alt+entrée]
m/d : texte [alt+entrée]
m/d : texte [alt+entrée]
m/d : texte [alt+entrée]
...
m/d : texte [alt+entrée]
Lorsque les données sont exportées vers JMP, la cellule est réduite à : m/d : texte m/d : texte m/d : texte ... m/d : texte.
Je souhaite analyser cette longue chaîne de caractères contenant n éléments et créer une ligne par élément, sans la diviser en colonnes. n est variable. Cela créerait un nouveau tableau de données copiant les colonnes existantes et y ajoutant l'élément analysé. Au lieu d'utiliser la conversion de texte en colonnes, il s'agit d'une conversion de texte en plusieurs lignes.
Heureusement, #/# est utilisé de manière cohérente, j'ai donc pu les compter et répéter la boucle n fois.
Quelqu'un a-t-il déjà fait quelque chose de similaire ?
Personnalisation de masseRe: désempiler une cellule Excel empilée ou analyser du texte de forme libre pour générer plusieurs lignesJe fais beaucoup ce genre de choses; il suffit de le parcourir. Voici un exemple où la colonne 1 a plusieurs valeurs et la colonne 2 est statique.
dt = New Table( "Test", Add Rows( 3 ), Set Cell Height( 83 ),
New Column( "Column 1", Character, "Nominal",
Set Values(
{"5/3: ABCDE
5/4: DEF
5/5: GHI",
"5/6: xyz
5/7: foo
5/8: bar
5/9: Hello
5/10: World",
"4/16: The
4/17: Entire
4/18: Scheme
4/19: Of
4/20: Things
4/21: Is broken"} ),
Set Display Width( 156 )
),
New Column( "Column 2", Character, "Nominal", Set Values( {"A", "B", "C"} ) )
);
dtnew = new table("Text_to_Rows",
new column("Column 1", Character, "Nominal"),
new column("Column 2", Character, "Nominal"),
);
delim = "
";
m = 0;
for (i = 1, i <= nrows(dt), i++,
c1_words = words(dt:column 1[i], delim);
one_c2 = dt:column 2[i];
for (k = 1, k <= nitems(c1_words), k++,
dtnew << add rows(1);
m++;
dtnew:Column 1[m] = c1_words[k];
dtnew:Column 2[m] = one_c2;
);
);
Re: désempiler une cellule Excel empilée ou analyser du texte de forme libre pour générer plusieurs lignesPeter:
Merci! Cela a fait l'affaire. Je te dois un verre de ton choix.
Je travaille sur les créateurs des données pour saisir les données au format plat ...
Re: désempiler une cellule Excel empilée ou analyser du texte de forme libre pour générer plusieurs lignesHa ha sonne bien. Au plaisir de vous voir à Discovery 2020.