eXma » Diskutieren » Computer und Technik
Startseite - Veranstaltungen - Mitglieder - Suche
Vollständige Version anzeigen: Excel: Text und Zahlen trennen
thewaywewalk
Hallo,

Hab eine Excel-Tabelle mit hunderten Filmen.

Eine Zelle ist immer nach diesem Schema gefüllt:

z.B.
City of God FR/BR/US 2002

Nun hätte ich aber gerne 3 Spalten mit Titel, Herkunft und Jahr.
Leider sind das alles normale Leerzeichen, darum funktioniert "Text in Spalten" nicht.

Ich weiß, dass es bei Google trotzdem Lösungsansätze gibt - aber entweder ich versteh sie nicht, oder sie funktionieren für meinen Fall nicht. Kann mir jemand die Lösung für meinen Fall sagen?

Filme die Zahlen enthalten, wie "21 Gramm" sollen mal vernachlässigt werden, die mach ich dann manuell.

Vielen Dank schonmal!
Stormi
Ein Macro dafür schreiben kannst du nicht?
Sigurd
Spontan würde mir einfallen, die Inhalte in ne txt-Datei zu packen und dann auf der Konsole mit sed, akw und Konsorten sortieren und Trennzeichen einfügen.

Das Ding kann dann hinterher in Excel wieder importiert werden, wobei die Trennzeichen als Spaltentrenner gewählt werden.

Voilà! smile.gif

/Edit: Wäre allerdings schwierig, das umzusetzen, dass er die Herkunftsländer deutlich von den Filmtiteln unterscheiden kann...
Allanon
Ein VBA-Makro sollte das Einfachste sein.
Ansonsten könntest Du ja "/" durch was sinnvolles "Suchen und Ersetzen"
Wenn dann die " " Zeichen stören kannst die auch durch "_" ersetzen und wenn alles an seinem Platz ist dieses wieder rückgängig machen wink.gif
thewaywewalk
Zitat
Ein Macro dafür schreiben kannst du nicht?
weiß halt leider nicht wie...

eine andere Idee, die ich hatte, ich aber auch nicht umsetzen kann:
1) den kompletten Zelleninhalt spiegeln
2) danach ist "Text in Spalten" durchführbar
3) zurückspiegeln

so würde man auf alle Fälle die Titel vom Rest trennen können.
thewaywewalk
Zitat
Ansonsten könntest Du ja "/" durch was sinnvolles "Suchen und Ersetzen"
Wenn dann die " " Zeichen stören kannst die auch durch "_" ersetzen und wenn alles an seinem Platz ist dieses wieder rückgängig machen


da hab ich ja nix gekonnt?

Edit: die Möglichkeit 2 Großbuchstaben hintereinander zu erkennen und quasi davor abzuschneiden, würde ja auch shcon alles Probleme lösen wink.gif
sn3ek
Zitat(thewaywewalk @ 25 Nov 2011, 17:46)
da hab ich ja nix gekonnt?

Edit: die Möglichkeit 2 Großbuchstaben hintereinander zu erkennen und quasi davor abzuschneiden, würde ja auch shcon alles Probleme lösen wink.gif
*


Hab nen RubyScript für dich, was vllt helfen kann:

Jetzt erstmal für einen Film - wenn du mir deine Exceltabelle in ein Text-File exportierst (die Spalte) und gibst, dann kann ich dir ein CVS File generieren.

Hier mein potenzieller Ruby-Code für dein Format:

CODE

TITLE_WORD = Regexp.new '^[a-zäöüA-ZÄÖÜ][a-zäöüß0-9]+'
COUNTRY_CODE = Regexp.new '([A-Z]{2}\/?)+'  #matched nun auch nur "FR" ohne /
YEAR = Regexp.new '^[0-9]{4}$'

film = "City of God FR/BR/US 2002"

elements = film.split(' ')
title = ""
country_code = ""
year = ""

elements.each do |element|
 if element.match TITLE_WORD
   title += "#{element} "
   puts "TITLE_WORD #{element}"
 elsif element.match COUNTRY_CODE
   country_code += "#{element} "
   puts "COUNTRY_CODE #{element}"
 elsif element.match YEAR
   year += "#{element} "
   puts "YEAR #{element}"
 end
end
     
cvs = "\"#{title}\";\"#{country_code}\";\"#{year}\""

puts cvs


Ausgabe:

Zitat
TITLE_WORD City
TITLE_WORD of
TITLE_WORD God
COUNTRY_CODE FR/BR/US
YEAR 2002
"City of God ";"FR/BR/US ";"2002 "
stebbl
biggrin.gif So ähnlich hab ich mir das in Python gedacht ...
thewaywewalk
okay habs hinbekommen.

1) Zelle Spiegeln
2) Text in Spalten über Leerzeichen
3) Jahr und Herkunft zurückspiegeln
4) Titel ist ja jetzt auf mehrere Zellen verteilt und gespiegelt, daher erst mit

CODE
=A1&" "&B1&" "&C1&" "&D1&" "&E1


zusammengefügt und dann gespiegelt.

Das Spiegel Makro sieht so aus:

CODE

Option Explicit
Sub spiegeln()
' Spiegelt die Inhalte der Spalte A und schreibt das Ergebnis in Spalte B
Dim r%, s%
Dim lg%
Dim str As String
For r = 1 To Range("A65536").End(xlUp).Row
   lg = Len(Cells(r, 1))
       For s = lg To 1 Step -1
           str = str & Mid(Cells(r, 1), s, 1)
       Next s
   Cells(r, 2) = str
   str = ""
Next r
End Sub


Danke für eure Anregungen!

PS: musste natürlich mit allerlei Hilfsspalten arbeiten.

Jetzt kann ich mich endlich von diesen Moviepilot-Datenhaien abmelden wink.gif