L'autre jour, je suis tombé sur le même vieux problème, presque dix ans après le début de ce sujet. Les solutions proposées ici nécessitaient des étapes supplémentaires, ajoutant une complexité que je voulais éviter. J'ai donc trouvé une autre solution qui a fonctionné pour moi.
J'avais besoin de traiter certaines données dans Excel et de sortir quelques valeurs numériques intégrées dans un code XML.
Mon idée maîtresse
Données traitées (simplifiées)
Item 1
Item 2
Sortie souhaitée (simplifiée)
<li>Item 1</li>
<li>Item 2</li>
Au départ, j'ai essayé de générer la sortie sous forme de texte multiligne dans une seule cellule en utilisant CHAR(10). Le texte copié dans mon fichier XML ressemblait à ceci
"<li>Item 1</li>
<li>Item 2</li>"
Puis j'ai compris que je devais simplement créer chaque ligne de code dans une cellule distincte et copier les lignes.
chaque ligne de code dans une cellule séparée
Cela a résolu le problème pour moi.
Et quand on y pense, pourquoi créer un texte multiligne dans une seule cellule si vous avez l'intention de l'insérer dans un autre logiciel ? Si, pour une raison quelconque, vous avez également besoin de l'avoir dans une seule cellule dans Excel, vous pouvez simplement créer le texte dans plusieurs cellules d'une autre feuille de calcul et le concaténer dans votre feuille de calcul en utilisant CHAR(10) ou CHAR(13).
Mon problème actuel
J'ai utilisé Excel pour calculer les coordonnées de certaines structures XML, puis j'ai dû intégrer les coordonnées dans les lignes de code XML prédéfinies.
svg:x="[coor_x]cm"
svg:y="[coor_y]cm"
Comme j'avais de nombreuses paires de coordonnées, il m'a semblé naturel de générer un texte multiligne pour chaque paire de coordonnées afin de pouvoir faire glisser la formule vers le bas facilement.
chaque cellule contient deux lignes pour coor_x et coor_y
Mais la sortie insérée dans un autre logiciel était moins que souhaitable :
"svg:x=""1.43cm""
svg:y=""2.47cm"""
"svg:x=""0.53cm""
svg:y=""2.12cm"""
Une autre approche consistait à avoir une formule pour coor_x dans les rangées paires et une formule différente pour coor_y en rangs impairs. Mais je perdrais alors la possibilité de faire glisser les formules sur autant de rangs que nécessaire. Je devrais copier et coller cette paire de formules ci-dessous un grand nombre de fois et réajuster les références erronées aux cellules stockant les coordonnées.
paire de formules dans deux lignes qui doivent être copiées plusieurs fois
Enfin, lorsque j'ai découvert que ma version d'Excel prenait en charge les tableaux dynamiques, j'ai compris comment procéder correctement. (Je pense que cela devrait également fonctionner sur les anciennes versions d'Excel utilisant des plages nommées).
J'ai généré toutes les lignes pour coor_x dans une colonne, puis a généré toutes les lignes pour coor_y dans une autre colonne, puis a utilisé une version modifiée de la formule pour empiler les données des deux colonnes en une seule :
=LET(a,TRANSPOSE(A8:B9),r,ROWS(a),seq,SEQUENCE(r*COLUMNS(a),,0),arr,INDEX(a,MOD(seq,r)+1,seq/r+1),arr)
générer toutes les lignes pour coor_x dans une colonne, générer toutes les lignes pour coor_y dans une autre colonne, utiliser la formule ci-dessous pour empiler les données de plusieurs colonnes dans une seule colonne
En utilisant les tableaux dynamiques de manière créative, vous pouvez même vous passer de la nécessité d'ajuster manuellement les régions du tableau lorsque vous ajoutez des paires de coordonnées supplémentaires.
J'espère que cette solution vous sera également utile !