![]() |
Excel: Zelleninhalt aufteilen (VBA)
Hallo Leute,
ich hab da folgendes Problem bei Excel: in einer Zelle habe ich alles mögliche stehen, nämlich PLZ, Ort, Strasse, Str.-Nr., Tel.-Nr. Diese Daten würde ich gerne auf 5 Spalten aufteilen (also in 5 benachbarte Zellen umverteilen). Im Internet habe ich unter http://www.sigmundhalpern.de/ ein Makro gefunden, das dem Ganzen schon sehr nahe kommt (siehe unten), aber eben nicht ganz ... Kann mir vielleicht einer von euch Gurus das Makro umbauen? Wäre wirklich toll, da ich bei ein paar 100 Einträgen sonst ewig brauchen würde und ich mich mit VBA u.dergl. leider Null auskenne! Vielen Dank, Kasp. ------ Aus einem markierten Bereich die Vornamen und Nachnamen trennen und in die Nachbarzellen einlesen: Sub trennen() Dim a%, b%, i% Dim Zelle As Object 'Bereich muß markiert sein, ' für jede Zelle in der Markierung: For Each Zelle In Selection With Zelle 'Suche nach der ersten Leerstelle a = InStr(.Value, " ") 'Schleife, falls mehrere durch leer getrennte Vornamen 'vorhanden sind, z. B. Ute Elke Meier For i = 0 To Len(.Value) b = InStr(Right(.Value, Len(.Value) - a), " ") a = InStr(Right(.Value, Len(.Value) - a), " ") + a Next On Error Resume Next 'falls leere Zellen markiert sind 'Aufteilen auf die 1. Zelle rechts und die 2. Zelle rechts 'Vorname Cells(.Row, .Column + 1).Value = Left(.Value, a - 1) 'Name Cells(.Row, .Column + 2).Value = Right(.Value, Len(.Value) - a) End With Next End Sub |
Wäre es nicht leichter, die Tabelle als Unicode-Text zu speichern und dann die Text-Datei wieder zu importieren. Da kannst schön festlegen, wie der Text in die Spalten übernommen wird.
|
@flinx:
Stimmt, sollte vorerst genügen DANKE, Kasp. |
Hier noch ein kleines Sub das die Sache auch sehr schön erledigt.
|
@Seidl:
Interessant, nur funkts bei mir nicht... "Fehler beim Kompilieren: Sub oder Function nicht definiert" MfG, Kasp. |
Das ist recht verwunderlich. Ich habe es gerade auf einem anderen Rechner laufen lassen und konnte keinerlei Probleme feststellen.
Ich glaube zwar eigentlich nicht, dass es an der Version von Excel liegen kann aber wer weiss. Ich benutze Office-XP. In welcher Version hast du getestet? Wie hast du das File in Excel eingefügt? |
@Seidl:
Excel 97. Eingefügt über VB-Editor - Datei importieren. Das selbe in grün über VB-Editor - Ansicht - Code - <c&p> MfG, Kasp. |
Schräge Sache. In welcher Zeile fliegt er denn raus? Normalerweise legt der Editor ja eine Markierung auf den Codeteil der einen Fehler verursacht hat.
Wenn's sich ausgeht werde ich am Wochenende auf meiner heimatlichen Maschine mal Excel 97 installieren. Schon rein aus Interesse was da der grosse Unterschied ist. |
ich werd mal meinen Schlepptop mit Excel 2002 anwerfen, ich glsub das geht schneller :)
Kasp. |
Wie gesagt war ich auch selbst neugierig. Der Übeltäter war die Funktion 'split' die offensichtlich in dieser Version noch nicht enthalten ist.
Ich habe mir schnell einen kleinen Ersatz geschrieben und schon hat die Sache funktioniert. |
do muaß wos is
Hmmmm, also Fehler wird jetzt zwar keiner mehr angezeigt, aber irgendwie funkts auch nicht so ganz: wenn ich eine Zelle mit vielen Einträgen markiere, kopiert mir der modsplitter einfach die ganze Zelle nach rechts (also die Zelle rechts schaut dann ganz genau so aus). Gesplittet wird da nix, nur kopiert ... oder was mach ich falsch? :confused:
Kasp. |
Hast du die Konstante für den Delimiter entsprechend deiner Daten geändert?
Ich habe als Trennzeichen ", " also Beistrich & Leerzeichen festgelegt. |
stimmt, nur mit Leerzeichen funktionierts :)
Thx, Kasp. |
Also das kann ich jetzt so nicht im Raum stehen lassen. Das sieht ja so aus als wäre mein Programm schneller eingeschnappt als eine Freundin. :D
Mit einer Konstantendefinition von Const strDelemiter As String = "Sepperl" würde es auch mit durch 'Sepperl' getrennten Daten funktionieren. :p |
Hoppala
hehehehe
Nein, da hast mich falsch verstanden! Meine Zellen-Daten sind "nur" durch ein Leerzeichen getrennt. Wenn ich jetzt "nur" das Leerzeichen im Sub (und nicht zusätzlich den Beistrich oder einen Sepperl) stehenlasse (Const strDelemiter As String = " "), dann funkts :lol: :lol: :lol: MfG, Kasp. |
Alle Zeitangaben in WEZ +2. Es ist jetzt 12:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag