cement
Goto Top

Bestimmte Werte aus einer Zelle auslesen

Moin Leute,

aus einer SQL-Datenbank habe ich eine Tabelle nach Excel kopiert.
Nun möchte ich aus einer Zelle bestimmte Werte herauslesen.
In der SQL-Datenbank war dies zuvor ein "Memo"-Feld. Die einzelnen Werte sind dort mit einem Zeilenumbruch getrennt.

Im Excel sieht das dann z.B. so aus:

A_VSG_06mm*?0?(kein)?0?A_VSG_06mm?0?(kein)?0?(kein)?0?(kein)...

Nun möchte ich in einer Zelle nur die Zeichen bis zum ersten Zeilenumbruch auslesen
In einer zeiten Zelle sollen dann die Zeichen zwischen dem zweiten und dem dritten Zeilenumbruch stehen. (usw.)

Das Ergebnis sollte ungefähr so aussehen:

A B C D
1 A_VSG_06mm*?0?(kein)?0?A_VSG_06mm?0 A_VSG_06mm* (kein) A_VSG06mm

Die Länge der einzelnen Werte ist immer unterschiedlich.
Auch die Bezeichnungen sind immer verschieden.
Als einzige "Konstante" kann man den Zeilenumbruch ansehen.

Ich hoffe, dass mir hier jemand helfen kann.

Danke schon mal,

Gruß CeMeNt

Content-Key: 103376

Url: https://administrator.de/contentid/103376

Printed on: April 25, 2024 at 14:04 o'clock

Member: bastla
bastla Dec 05, 2008 at 11:44:10 (UTC)
Goto Top
Hallo CeMeNt!

Versuch es mit folgendem Makro:
Sub Aufteilen()
Range("A:A").Select  
Selection.Replace What:=Chr(10), Replacement:=";", LookAt:=xlPart, SearchOrder:=xlByRows  
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _  
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Semicolon:=True
Cells.EntireRow.AutoFit
Range("A1").Select  
End Sub
Annahme ist, dass sich die aufzuteilenden Zellen (siehe Zeilen 2 und 3) in Spalte A befinden. Sollte es so nicht klappen, kannst Du versuchen, Chr(10) durch Chr(13) oder eine Kombination davon (etwa Chr(13) & Chr(10) oder umgekehrt) zu ersetzen. Die Zeilenschaltungen werden durch ";" ersetzt - falls dieses im aufzuteilenden Text vorkommen sollte, müsste ein alternatives Zeichen verwendet werden - dann etwa so:
Sub Aufteilen()
Range("A:A").Select  
Selection.Replace What:=Chr(10), Replacement:="§", LookAt:=xlPart, SearchOrder:=xlByRows  
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _  
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Other:=True, OtherChar:="§"  
Cells.EntireRow.AutoFit
Range("A1").Select  
End Sub
Grüße
bastla
Member: CeMeNt
CeMeNt Dec 05, 2008 at 12:35:12 (UTC)
Goto Top
Moin bastla,

wie kommst Du bloß immer auf solch verrückte Sachen...? face-smile

Aber leider leider funktioniert das noch nicht so wie gewünscht.

Damit das Makro ausgeführt wird, muss ich den gewünschten Text über die Adress-Zeile kopieren und dann in ein neues Tabellenblatt einfügen.
(So funktioniert Dein Makro wirklich prima).

Wenn ich aber z.B. eine ganze Spalte kopiere und einfüge, passiert gar nichts. (Die Zellen werden unformatiert eingefügt)

Am liebsten wäre es mir dann, wenn das Ganze auch mit einer Verknüpfung funktioniert.

z.B. sind die original Werte im Tabellen-Blatt "Übersicht" eingetragen
Im Tabellen-Blatt "Auswertung" könnte ich dann schreiben:

=Übersicht!A1
=Übersicht!A2
=Übersicht!A3
...


Geht das wohl auch irgendwie?
Muss ja auch nicht unbedingt ein Makro sein.
Irgendeine Formel mit
=LINKS "bis zum ersten Zeilenumbruch"

oder in der Art würd mir ja auch schon langen... face-wink

Danke schon/noch mal

CeMeNt
Member: bastla
bastla Dec 05, 2008 at 14:46:12 (UTC)
Goto Top
Hallo CeMeNt!

Aber leider leider funktioniert das noch nicht so wie gewünscht.
Und Du hast schon alle Kombinationen von 10 und/oder 13 durch?

Irgendeine Formel mit
=LINKS "bis zum ersten Zeilenumbruch"
setzt ebenfalls voraus, dass die Darstellung des Zeilenumbruches (als Chr(10) bzw Chr(13)) bekannt ist - dann sollte aber eigentlich auch das obige Makro klappen ...

Abgesehen davon - wenn Du in jedem Feld der Spalte A einen Datensatz hast: Wolltest Du diesen tatsächlich jeweils anstatt auf Spalten auf Zeilen aufteilen?

Grüße
bastla