1 votes

Quelle est la meilleure façon de couper tout le texte avant ou après une chaîne de caractères correspondante avec excel ou open office ?

J'ai une colonne de données vilaines, qui doivent être normalisées. Il s'agit d'une seule colonne, donc je vais juste en inclure un extrait ici :

    pop_density_2010
    7002854600000000000854.6/sq mi (329.97/km2)
    70031416770000000001,416.77/sq mi (547.04/km2)
    70031051960000000001,051.96/sq mi (406.18/km2)
    70031822940000000001,822.94/sq mi (703.86/km2)
    70031297510000000001,297.51/sq mi (500.99/km2)
    70031285070000000001,285.07/sq mi (496.19/km2)
    70032087500000000002,087.5/sq mi (806.02/km2)
    7002133720000099999133.73/sq mi (51.64/km2)
    7002301560000000000301.56/sq mi (116.44/km2)
    70031003620000000001,003.62/sq mi (387.51/km2)
    7002593900000000000593.9/sq mi (229.31/km2)
    7002679689999900000679.68/sq mi (262.44/km2)
    7002368120000000000368.12/sq mi (142.14/km2)
    70031072369999999991,072.37/sq mi (414.06/km2)
    70031343750000000001,343.75/sq mi (518.84/km2)
    7002303640000000000303.64/sq mi (117.24/km2)
    70031465180000000001,465.18/sq mi (565.73/km2)
    7002987180000000000987.18/sq mi (381.17/km2)
    7002266330000099999266.33/sq mi (102.83/km2)
    7002235830000000000235.83/sq mi (91.06/km2)
    7002234160000000000234.16/sq mi (90.41/km2)
    7002208440000000000208.44/sq mi (80.48/km2)
    7002204020000000000204.02/sq mi (78.78/km2)
    7002808690000000000808.69/sq mi (312.25/km2)
    7002325910000000000325.91/sq mi (125.84/km2)
    7002697710000000000697.71/sq mi (269.4/km2)
    7002544740000000000544.74/sq mi (210.33/km2)

En ruby, mon impulsion ici serait de faire quelque chose comme ceci, en donnant la colonne transposée comme un tableau :

array.map{|x| x.split("sq mi (")[1].split("/km2")[0]}
#=> 329.97, 547.92, 406.18, ...

Et j'aurais terminé. Mais je ne suis pas dans un environnement de programmation donc ce n'est pas vraiment pratique en ce moment.

Je veux pouvoir faire la même chose avec Open Office ou excel, et je ne veux pas sortir VB pour le faire parce que je ne connais pas VB.

Si vous pouvez voir dans le code, ce qu'il fait, c'est diviser la chaîne d'une cellule donnée en un tableau de fragments de chaîne divisés par la correspondance avec la chaîne "sq mi(", saisir la seconde moitié de celle-ci, puis faire la même chose, mais en sens inverse, avec la chaîne "/km2" et saisir la première partie. J'obtiens alors un nombre simple que je peux convertir en miles ou autre. Merci.

1 votes

Pouvez-vous montrer un exemple de la manière dont vous souhaiteriez qu'il soit analysé pour deux lignes ? Je ne suis pas sûr de ce que les délimiteurs

1voto

Daniel May Points 5060

La formule suivante permet d'extraire le nombre de "km2" de la chaîne stockée dans le fichier A1 .

=VALUE(LEFT(RIGHT(A1, LEN(A1)-FIND("sq mi (", A1)-6), FIND("/km2", RIGHT(A1, LEN(A1)-FIND("sq mi", A1)-6))-1))

Il est très similaire à votre programme. Tout d'abord, il tronque tout ce qui se trouve avant l'élément sq mi ( puis il tronque tout ce qui se trouve après (et y compris) l'élément /km2 . La formule entière est enveloppée dans un VALUE afin de convertir du texte en un nombre.

0voto

sortinousn Points 121

Vous pouvez utiliser une méthode qui n'est pas celle du programmeur mais celle de l'utilisateur d'Excel :-) Donc, vous utilisez le menu Données では Texte en colonnes en utilisant Délimiteur option. Vous devrez le faire deux fois :

  1. appliquer la commande à la première colonne et utiliser ( comme délimiteur -- vous recevrez la prochaine colonne remplie de ###.##/km2 valeurs ;
  2. appliquer la commande à la colonne apparue et utiliser / comme délimiteur -- cette colonne sera effacée /km2 qui passe à la colonne suivante (la troisième).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X