_
toggle menu eXmatrikulationsamt.de
online: 566 gäste

Excel: Text und Zahlen trennen

innerhalb einer Zelle
Themen Layout: [Standard] · Linear · Outline Thema abonnieren | Thema versenden | Thema drucken
post 25 Nov 2011, 17:08
avatar
Vordiplom
*****

Punkte: 550
seit: 08.03.2009

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!

Dieser Beitrag wurde von thewaywewalk: 25 Nov 2011, 17:09 bearbeitet


--------------------
And you run and you run to catch up with the sun, but its sinking.
And racing around to come up behind you again...
ProfilPM
AntwortenZitierenTOP
post 25 Nov 2011, 17:37
avatar
eXma Poltergeist
*********

Punkte: 6729
seit: 20.10.2004

Ein Macro dafür schreiben kannst du nicht?


--------------------
ProfilPM
AntwortenZitierenTOP
post 25 Nov 2011, 18:31
avatar
Automatix
*********

Punkte: 5198
seit: 09.11.2005

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...

Dieser Beitrag wurde von Sigurd: 25 Nov 2011, 18:32 bearbeitet


--------------------
Barbarus hic ego sum, quia non intellegor ulli.
ProfilPM
AntwortenZitierenTOP
post 25 Nov 2011, 18:41
avatar
5. Schein
******

Punkte: 921
seit: 01.10.2003

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


--------------------
I never finish anyth
ProfilPM
AntwortenZitierenTOP
post 25 Nov 2011, 18:45
avatar
Vordiplom
*****

Punkte: 550
seit: 08.03.2009

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.
ProfilPM
AntwortenZitierenTOP
post 25 Nov 2011, 18:46
avatar
Vordiplom
*****

Punkte: 550
seit: 08.03.2009

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

Dieser Beitrag wurde von thewaywewalk: 25 Nov 2011, 18:49 bearbeitet
ProfilPM
AntwortenZitierenTOP
post 25 Nov 2011, 19:16
avatar
busy office
********

Punkte: 1655
seit: 30.06.2006

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 "


Dieser Beitrag wurde von sn3ek: 25 Nov 2011, 19:24 bearbeitet


--------------------
Grüße sn3ek
ProfilPM
AntwortenZitierenTOP
post 25 Nov 2011, 19:24
avatar
2. Schein
**

Punkte: 78
seit: 14.08.2010

biggrin.gif So ähnlich hab ich mir das in Python gedacht ...
ProfilPM
AntwortenZitierenTOP
post 25 Nov 2011, 19:25
avatar
Vordiplom
*****

Punkte: 550
seit: 08.03.2009

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

Dieser Beitrag wurde von thewaywewalk: 25 Nov 2011, 19:26 bearbeitet
ProfilPM
AntwortenZitierenTOP
1 Nutzer liest/lesen dieses Thema (1 Gäste)
0 Mitglieder: