Qual é a melhor maneira de cortar todo o texto antes ou depois de uma string correspondente com excel ou open office?

1

Eu tenho uma coluna de dados maliciosos, que precisa ser padronizada. É uma coluna única, então vou incluir apenas um trecho aqui:

    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)

Em ruby meu impulso aqui seria fazer algo assim, dada a coluna transposta como um array:

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

E eu estaria feito. Mas eu não estou em um ambiente de programação, então isso não é exatamente conveniente agora.

Eu quero ser capaz de fazer a mesma coisa com o Open Office ou o Excel, e não quero extrair o VB para fazer isso, porque eu não sei o VB.

Se você puder ver no código o que ele faz é dividir a string de uma determinada célula em uma matriz de fragmentos de string divididos pela combinação com a "sq mi (" string, pega a segunda metade disso, então faz a mesma coisa) apenas inverta com a string "/ km2" e pegue a primeira parte. Então eu tenho um número simples e simples que eu posso converter em milhas ou qualquer outra coisa. Obrigado.

    
por boulder_ruby 25.03.2014 / 23:49

2 respostas

1

A fórmula a seguir extrairá o número "km2" da string armazenada em A1 .

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

É muito semelhante ao seu programa. Primeiro, trunca tudo antes do sq mi ( e depois trunca tudo depois (e incluindo) o /km2 . A fórmula inteira é agrupada em uma função VALUE para converter de texto em um número.

    
por 26.03.2014 / 02:55
0

Você não pode usar o programador, mas a maneira do usuário do Excel :-) Então, você usa o menu Data e o comando Text to Columns , usando a opção Delimiter . Você precisará fazer isso duas vezes:

  1. aplique o comando à primeira coluna e use ( como delimitador - você receberá a próxima coluna preenchida com ###.##/km2 valores;
  2. aplique o comando à coluna que acabou de aparecer e use / como delimitador - essa coluna será apagada /km2 , que passa para a próxima (terceira) coluna.
por 26.03.2014 / 10:38