Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1472to1476
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellinhalt mittels VBA trennen

Zellinhalt mittels VBA trennen
04.02.2016 11:20:23
Mike
Hallo Excel Freunde,
ich bräuchte bei folgender Aufgabe Unterstützung.
In Spalte A (Beginnend mit A2) stehen aus einem csv Export untereinander Daten in genau dieser Schreibweise:
Name,Vorname Gruppe
Über VBA sollte nun eine Spalte rechts eingefügt werden und die Gruppe in Spalte A entfernt und dafür in Spalte B eingefügt werden. Die Lösung muss über VBA und nicht über Formeln erfolgen. Wer kann mir mit dem Code helfen?
Gruß
Mike

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellinhalt mittels VBA trennen
04.02.2016 11:23:55
Bernd
Hi,
einfach mit dem recorder aufgezeichnet s.
Sub test()
' test Makro
Columns("B:B").Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A2:A11").Select
Selection.Cut
Range("B2").Select
ActiveSheet.Paste
End Sub
mfg Bernd

AW: Zellinhalt mittels VBA trennen
04.02.2016 11:34:01
Mike
Hallo Bernd,
das Makro fügt den gesamten Inhalt von Spalte A in die eingefügte Spalte B. Ich benötige jedoch eine Trennung des Zellinhaltes, so dass nur der Wert nach dem Lehrraum (Gruppe) übertragen wird.
Gruß
Mike

Anzeige
AW: Zellinhalt mittels VBA trennen
04.02.2016 11:55:00
Oberschlumpf
Hi Mike
Versuch mal (ungetestet, aber ohne Makrorecorder :-) )
Sub test()
Dim lloRow As Long, lstrSplit() As String
For lloRow = 1 To Cells(Rows.Count, 1).End(xlUp).Row
lstrSplit = Split(Range("A" & lloRow).Value, " ")
Range("A" & lloRow).Value = lstrSplit(0)
Range("B" & lloRow).Value = lstrSplit(1)
Next
End Sub

Mein Code geht in Spalte A Zeile für Zeile durch.
Der Inhalt in Zelle A... wird in 2 Teile aufgeteilt, das Trennzeichen ist das Leerzeichen
Der erste Teil der Trennung (Name,Vorname) wird in Zelle A... geschrieben
Der zweite Teil der Trennung (Gruppe) wird in Zelle B... geschrieben.
Hilfts?
Ciao
Thorsten

Anzeige
AW: Zellinhalt mittels VBA trennen
04.02.2016 13:25:42
Mike
Hallo Thorsten,
bekomme Laufzeitfehler Index außerhalb des gültigen Bereichts
Range("B" & lloRow).Value = lstrSplit(1)
Gruß Mike

AW: Zellinhalt mittels VBA trennen
04.02.2016 13:35:17
Oberschlumpf
Hi Mike,
in welcher Zeile der Tabelle tritt dieser Fehler auf?
Dieser Fehler weist darauf hin, dass in der entsprechenden Zeile in Spalte A ein Wert steht, der - kein - Leerzeichen enthält.
Daher:
Zeig mal bitte eine Bsp-Datei mit Bsp-Daten und dem VBA-Code....per Upload.
Ciao
Thorsten

AW: Zellinhalt mittels VBA trennen
04.02.2016 13:52:55
Mike
Hallo Thorsten,
ich habe aktuell noch keine Bsp. Datei. Bei Debuggen wird die o. g. Fehler gelb markiert.
Gruß Mat

Anzeige
AW: Zellinhalt mittels VBA trennen
04.02.2016 14:48:20
Oberschlumpf
Hi Mike
Dann erstell doch eine Bsp-Datei...
Ciao
Thorsten

So etwas löst man über Text-in-Spalten, ...
04.02.2016 14:01:29
Luc:-?
…Mike,
was man auch mit dem Makro-Recorder aufzeichnen kann. Außerdem gibt's im Archiv etliche Lösungen mit UDFs*, die in ZellFmln oder SubProzeduren eingesetzt wdn können. Mit deren Ergebnis könnten die beiden Spalten überschrieben wdn.
* VSplit, Splint, Splitt, Trennen u.a.
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: So etwas löst man über Text-in-Spalten, ...
04.02.2016 14:12:42
Mike
Hallo Luc,
wie soll ich bitte mit dem Makro-Recorder die Trennung des Zellinhaltes aufzeichnen? Es keine Spalten überschrieben werden, sondern der abgetrennte Wert von Spalte A als Spalte B eingefügt werden.
Gruß Mike

AW: So etwas löst man über Text-in-Spalten, ...
04.02.2016 14:41:20
Daniel
Hi
du kannst bei TEXT-IN-SPALTEN festlegen, welche Spalten eingefügt werden und ab wo das Einfügen erfolgen soll.
Das machst du alles im Schritt 3 des Assistenten.
Gruß Daniel

AW: "Text in Spalten" ist eine native XL-Funktion
04.02.2016 14:42:30
Michael
Mike,
das wollte Dir Luc damit sagen, und die könnte bei Deinem Fall bereits ohne Formel oder Makro die gewünschte Lösung bringen. Die Anwendung der Funktion "Text in Spalten" kannst Du aber auch per Rekorder aufzeichnen.
Die Funktion findest Du im Menüband unter Daten -- Datentools - Text in Spalten. Wähle als Trennzeichen dann das Leerzeichen.
Die Funktion macht das:
Tabelle1

 ABCD
1Ausgangssituation Nach Funktion Text in Spalten 
2    
3Thomas,Müller GruppeA Thomas,MüllerGruppeA
4Jens,Meier GruppeB Jens,MeierGruppeB
5Hans,Husten GruppeA Hans,HustenGruppeA
6Petra,Probe GruppeC Petra,ProbeGruppeC
7Daniel,Düsentrieb GruppeD Daniel,DüsentriebGruppeD
8Max,Muster GruppeA Max,MusterGruppeA
9Tom,Tester Gruppe D Tom,TesterGruppeD
10Paula,Probe GruppeF Paula,ProbeGruppeF
11Elke,Experiment GruppeX Elke,ExperimentGruppeX
12Jemand,Anderer GruppeC Jemand,AndererGruppeC

Lg
Michael

Anzeige
AW: Als Makro dann bspw. so
04.02.2016 14:54:04
Michael
Mike,
was aber nur der geputzte Makro-Rekorder-Code ist:
Sub Trennen()
Dim Liste As Range
Dim Ziel As Range
Dim ws As Worksheet
'Auf dem aktiven Tabellenblatt
Set ws = ActiveSheet
With ws
'Daten von A2 bis zur letzten gefüllten Zelle in A aufteilen
'Daten werden beim Leerzeichen getrennt
Set Liste = .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
Liste.TextToColumns Destination:=Liste(1), Space:=True
End With
End Sub
Lg
Michael

AW: Als Makro dann bspw. so
04.02.2016 15:35:27
Mike
Hallo an Alle,
danke für die Antworten.
Das Makro von Michael ist was ich gesucht habe, mit der kleinen Ausnahme, dass die Daten in Spalte B (zwar gefragt) überschrieben werden. Die Spalte mit den Gruppendaten sollte aber zusätzlich eingefügt werden und alle anderen Spalten nach rechts rucken, dann wäre es perfekt.
Lg
Mike

Anzeige
Dann musst du während der Aufzeichnung ...
04.02.2016 15:47:43
Luc:-?
…des Makros eben erst noch eine leere Spalte rechts von der zu behandelnden einfügen, Mike!
Ist das denn wirklich so schwer, wenn man wenigstens in Xl gut sein will…?! :->
Luc :-?

AW: Eigene Anstrengung ist nicht verboten...
04.02.2016 16:26:34
Michael
Mike!
Du hast ja nie Deinen konkreten Tabellenaufbau gezeigt - wer soll dann annehmen, dass in Spalte B schon Daten vorhanden sind. Und wie Luc richtig sagt: Du hast etliche Lösungshinweise bekommen, aber es ist nicht verboten sich dann auch noch selbst die "Hände etwas schmutzig" zu machen ;-)...
Zum "Problem" des Überschreibens von Spalte B: entweder Du fügst vorher eine Spalte ein und löst dann das Makro aus oder geändertes Makro:
Sub Trennen()
Dim Liste As Range
Dim Ziel As Range
Dim ws As Worksheet
'Auf dem aktiven Tabellenblatt
Set ws = ActiveSheet
With ws
'Zusätzliche Spalte
.Columns("B:B").Insert shift:=xlToRight
'Daten von A2 bis zur letzten gefüllten Zelle in A aufteilen
'Daten werden beim Leerzeichen getrennt
Set Liste = .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
Liste.TextToColumns Destination:=Liste(1), Space:=True
End With
End Sub
LG
Michael

Anzeige
Bei mir kam dabei zB diese Befehlsfolge ...
04.02.2016 14:48:11
Luc:-?
…heraus. Mike:
    Range("F7:F9").Select
Selection.TextToColumns Destination:=Range("F7"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
Viel Erfolg!
Luc :-?

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige