Comment coller des données Excel sous forme de texte à largeur fixe?

16

Si je copie des données dans Excel et les colle dans un fichier texte, j'obtiens des onglets entre les cellules. Ce n'est pas bon, je veux des espaces - et je veux que les colonnes soient alignées. Comment puis-je y parvenir sans trop d'efforts (évidemment, je ne veux pas commencer à exécuter des regexps à la main, etc.)

L'utilisation de «Enregistrer sous» (comme dans cette question ) n'est pas une solution pour moi, j'ai besoin de copier et coller.

einpoklum
la source
j'ai une solution possible qui impliquerait de coller d'un classeur à un autre classeur (puis de l'autre classeur à l'endroit où vous collez. cela correspond-il à votre flux de travail?
Pynner
@Pynner: Eh bien, cela convient mieux que pas de solution du tout, alors oui, allez-y.
einpoklum

Réponses:

14

Ce n'est certainement pas simple à expliquer ... mais après sa configuration, cela fonctionnera avec un minimum d'effort. C'est aussi une légère variation sur ce que @pnuts a décrit

Je suggère d'utiliser une feuille de calcul de modèle sur laquelle vous pouvez copier-coller. le modèle que j'ai créé a 3 onglets qui se présentent comme suit.

onglets

  • Data l'onglet est l'endroit où les données sont collées
  • Length va faire un peu de calcul pour déterminer la plus longue colonne
  • Space insert va insérer le nombre approprié d'espaces (modifier) ​​que vous pouvez copier à partir d'ici et obtenir le résultat correct

l'onglet de longueur ressemble

longueur

La ligne 1 contient au maximum les caractères de la colonne ci-dessous et contient la formule

=MAX(A2:A101)+1

+1 crée le délimiteur.

Les lignes 2 à n (que j'ai étendues à 100 pour cet exemple) contiennent une formule pour évaluer la longueur de chaque chaîne

=LEN('Data tab'!A1)

l'onglet d'insertion d'espace ressemble

insert d'espace

Chaque cellule contient une cellule pour évaluer sa longueur par rapport à la valeur max (+ délimiteur) et insérer un nombre approprié d'espaces.

='Data tab'!A1&REPT(" ",length!A$1-length!A2)

Notez le $ qui verrouille la ligne 1 si vous copiez et collez la formule

(modifier), vous pouvez copier à partir de l'onglet d'insertion d'espace.

bloc-notes

Pynner
la source
1
Ingénieusement conçu!
einpoklum
Mais ... pourquoi ai-je vraiment besoin de la dernière feuille? Je peux copier-coller à partir de la troisième feuille. De plus, je ne veux pas utiliser de formules longues répliquées pour chaque colonne.
einpoklum
Tout à fait raison ... le dernier onglet n'est pas requis ... j'avais supposé que les cellules inséreraient des caractères supplémentaires. Je
mettrai à
Excellente réponse, merci beaucoup. Personnellement, certaines de mes colonnes étaient très longues, j'ai donc ajouté une page avec "= LEFT ('insert d'espace'! A1, $ K $ 2) & IF (Longueur! A2> $ K $ 2," ... | ", "|") "où $ K $ 2 est défini sur une valeur appropriée (le maximum de la colonne la plus importante). Cela fonctionne bien pour les descriptions, etc., pour la prochaine étape: p
chrispepper1989
la prochaine étape serait l'alignement correct des chiffres
vlad_tepesch
3

La solution la plus simple serait de concaténer vos données numériques dans une chaîne "validée" qui colle correctement dans un fichier texte. Créez la formule Excel pour une ligne, puis copiez-la pour toutes les lignes de la feuille de calcul, puis copiez la colonne de formule et collez-la dans le fichier texte. Par exemple,

Les données

Cellule A1: 247

Cellule B1: 19

Cellule C1: 1437

Formule dans la cellule D1

= A1 & "," & B1 & "," & C1

Résultat collable avec le texte

247,19,1437

Il existe une autre approche qui ne repose pas sur des formules.

  • Tout d'abord, assurez-vous que vos colonnes de données ont toutes la même largeur.
  • Insérez ensuite une autre colonne entre chaque paire de colonnes de données, chacune d'une largeur de 2.
  • Entrez une seule virgule dans chacune des colonnes insérées, en la copiant sur la longueur des données.
  • Enfin, enregistrez la feuille de calcul en tant que fichier texte formaté (délimité par des espaces) (* .prn).

Un avantage de cette alternative est qu'elle préserve le formatage de vos données. Si vous souhaitez formater les données par des virgules ou simplement afficher une décimale, votre formatage sera conservé dans le fichier prn.

chuff
la source
1
L'amélioration suggérée par pnuts est exactement la bonne. J'ai mis à jour ma réponse avec une autre alternative qui utilise Enregistrer sous.
chuff
Donc, comme je l'ai dit dans la question, enregistrer sous n'est pas une option. La solution REPT fonctionnera-t-elle avec le copier-coller? De plus, je n'accepte pas encore car j'aimerais quelque chose de moins lourd.
einpoklum
0

Vous pouvez copier vos données dans Word, puis utiliser Rechercher et remplacer (Ctrl + H) pour remplacer les tabulations par des espaces.

  1. Ouvrir et coller des données dans Word
  2. Appuyez sur Ctrl+H
  3. Plus >>
  4. Spécial
  5. Espace blanc
  6. Mettez un espace dans le remplacer par:
  7. Remplace tout
Michael
la source
Cela ne fera pas ce que j'ai demandé, désolé - les largeurs des colonnes seront différentes.
einpoklum