Formater une feuille Excel lors du copier / coller depuis un site Web

0

J'essaie de créer une base de données à partir de ce site . Chaque pays a une multitude d'agents, avec les coordonnées à côté de leur nom (le numéro de fax et le nom de l'entreprise ne sont pas obligatoires).

Le problème vient du format du site Web . Lorsque je copie les données dans ma feuille Excel, chaque agent dispose d’informations réparties sur 3 ou 4 lignes.

J'ai besoin que chaque agent ait toutes ses informations sur une rangée,

par exemple. (cellules entre parenthèses)

[ A1 ]       [ B1 ]             [ C1 ]  [ D1 ]                     [ E1 ]  [ F1 ]
GRO Alberti  [email protected]  Bosnia  P Hora K2 A 8 41 Dhjetori  Girana  Tel:+42-79/379 82 86.

J'ai essayé de copier-coller tout cela manuellement, mais cela prend beaucoup trop de temps.

Existe-t-il un moyen automatique ou plus rapide de réaliser ce que j'essaie de faire?

utilisateur2699532
la source
Je vous suggère de poster cette question sur Stack Overflow , car il s'agit de programmation. Cependant, vous devriez d'abord essayer et poster une question montrant ce que vous avez essayé et pourquoi cela n'a pas fonctionné. Excel a un bon macro-enregistreur: vous pouvez lire manuellement ce que vous voulez faire et consulter le code généré.
d-stroyer
Merci d-stroyer, mais j'y ai déjà essayé et ma question a été mise en attente car elle était "hors sujet"
utilisateur2699532.
Bon, je vois ce maintenant. Le fait est que vous devez d'abord essayer (de manière automatisée), puis demander. Vous pourriez envisager ma suggestion avec le macro-enregistreur.
d-stroyer
En outre, vous pouvez envisager de résoudre votre problème: 1. Récupérez les données du site Web dans un fichier texte / csv formaté (incomplètement); 2. Utilisez Excel, Python ou autre pour importer les données dans votre fichier Excel. Les petites questions sont plus faciles à répondre que les grandes.
d-stroyer

Réponses:

0

Si vous souhaitez utiliser des formules Excel:

  • copier et coller le tableau dans Excel
    • les lignes des 2 premières colonnes seront fusionnées, mais les formules ne peuvent voir la valeur que dans la cellule la plus à gauche de la zone fusionnée, les autres cellules sont vides pour les formules
  • en supposant que les données commencent dans la cellule A2, ajoutez la formule suivante dans la cellule E2- la nouvelle ligne est entrée avec Alt+Enter:
    = C2 & IF ($ A3 <> "", "", " 
    " & E3)
  • copier la formule dans la plage appropriée
  • filtrer par Namecolonne, à l'exclusion(Blanks)
  • masquer l'original Addresset les Other infocolonnes
  • copier et coller spécial en tant que valeurs dans une nouvelle feuille

illustration de la solution avant la dernière étape

L'algorithme sous-jacent est:

  1. commencer par la rangée du bas
  2. Si Namedans une rangée vers le bas n'est pas vide, créez une nouvelle chaîne Scontenant l'adresse à partir de cette ligne,
    sinon ajoutez le texte à partir de l'adresse dans cette ligne au début deS
  3. déplacer 1 rangée vers le haut
Un million
la source
0

Je ne sais pas exactement comment vous obtenez la valeur de C1, mais vous devriez pouvoir obtenir la source de la page. Pour ce faire, appuyez sur Ctrl+ U. Cela devrait vous donner une page écrite en HTML. Recherchez la ligne 128 (ou le début du tableau, il devrait contenir les données dont vous avez besoin et commencer par <table class ....

Copiez tous <table class ...à ce </table>qui est sur la même ligne, près de la fin.

Collez ceci dans le bloc-notes.

Cliquez sur Ctrl+ Het utilisez Rechercher quoi: <br />Remplacer par: "" (un espace) et cliquez sur remplacer tout.

Copiez tout et collez dans Excel. Vous pouvez ensuite supprimer la mise en forme pour uniformiser les dimensions de la cellule.

Notez que les hyperliens resteront dans les données.

MODIFIER:

Pour séparer les e-mails, tel, mobile et fax sera un peu plus long, mais pas si long.

Pour obtenir le courrier électronique, utilisez cette formule dans la cellule suivante dans E2:

=LEFT(D2, FIND(" ",D2)-1)

Et faites glisser vers le bas.

Pour obtenir les chiffres maintenant, il sera plus facile de les avoir tous séparément dans la colonne F:

=MID(D2, FIND(" ",D2)+1, LEN(D2))

Maintenant en G, nous aurons le Tel, en H nous aurons le Fax et en I, nous aurons le Mobile.

Dans G2, mettez et tirez vers le bas:

=IFERROR(MID(F2,FIND("Tel:",F2)+4,IFERROR(FIND(":",F2,FIND("Tel:",F2)+4),LEN(F2))-FIND("Tel:",F2)-4),"")

Dans H2, mettez et faites glisser:

=IFERROR(MID(F2,FIND("Fax:",F2)+4,IFERROR(FIND(":",F2,FIND("Fax:",F2)+4),LEN(F2))-FIND("Fax:",F2)-4),"")

Dans I2, mettez et faites glisser:

=IFERROR(MID(F2,FIND("Mobile:",F2)+7,IFERROR(FIND(":",F2,FIND("Mobile:",F2)+7),LEN(F2))-FIND("Mobile:",F2)-7),"")

Après cela, copiez tout et collez en tant que valeurs pour supprimer les formules. Sélectionnez les colonnes G à I et remplacez tout Tel, Faxet Mobilepar rien par Ctrl+ H.

Les fonctions françaises dans l'ordre mentionné ci-dessus:

=GAUCHE(D2, TROUVE(" ",D2)-1)

=STXT(D2, TROUVE(" ",D2)+1, NBCAR(D2))

=SIERREUR(STXT(F2,TROUVE("Tel:",F2)+4,SIERREUR(TROUVE(":",F2,TROUVE("Tel:",F2)+4),NBCAR(F2))-TROUVE("Tel:",F2)-4),"")

=SIERREUR(STXT(F2,TROUVE("Fax:",F2)+4,SIERREUR(TROUVE(":",F2,TROUVE("Fax:",F2)+4),NBCAR(F2))-TROUVE("Fax:",F2)-4),"")

=SIERREUR(STXT(F2,TROUVE("Mobile:",F2)+7,SIERREUR(TROUVE(":",F2,TROUVE("Mobile:",F2)+7),NBCAR(F2))-TROUVE("Mobile:",F2)-7),"")
Jerry
la source
Merci, cela a bien fonctionné, sauf que je dois séparer les informations de la colonne "autres informations" en 3 colonnes: Email, Téléphone fixe, Mobile. Est-il possible de le faire automatiquement par hasard? Sinon, je dois juste tout faire manuellement.
user2699532
@ user2699532 J'ai ajouté quelques éléments supplémentaires que vous pouvez utiliser pour le faire plus rapidement que manuellement :)
Jerry
Merci d’avoir pris le temps de le faire, mais je suis vraiment désolé. Une erreur s’est produite lorsque j’ai saisi la première formule "= LEFT (D2, FIND (" ", D2) -1)": c’est: #NOM? (Mon Excel est en français, donc c'est un message d'erreur en français.
user2699532
@ user2699532 Oh, remplacez simplement toutes les virgules de toutes les formules par des points-virgules ;. J'espère que cela résoudra les erreurs :)
Jerry
Je suis désolé mais cela n'a pas fonctionné non plus pour moi. Je dois apparaître comme un noob complet d'Excel, mais existe-t-il une autre solution possible pour ces équations? Si ce n'est pas le cas, ne le stresse pas. Je ferai simplement le tout manuellement.
user2699532