Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Werte aus Zeilenumbruch in neue Zeile

Betrifft: Werte aus Zeilenumbruch in neue Zeile von: Steffen
Geschrieben am: 30.07.2014 10:54:12

Hallo liebe Leute,

habe hier gerade ein Problem mit einem mir vorliegenden Excel Blatt und weiß leider nicht weiter. Ich habe bereits in anderen Foren geschaut aber bislang nichts gefunden.

Hier mal ein Ist-/Soll Zustand die mein Problem besser beschreibt als ich es könnte.





Ich möchte genau genommen die Werte die durch einen Zeilenumbruch in einer Zelle stehen jeweils in eine eigene Zeile darunter hinzufügen.

Leider handelt es sich nicht nur um zwei betroffene Zellen, sondern um eine komplette Spalte mit 300 Zellen. Gibt es eine Möglichkeit das zu automatisieren oder ein wenig zu vereinfachen??

Wäre über jede mögliche Hilfe sehr dankbar!!

Viele Grüße

  

Betrifft: AW: Werte aus Zeilenumbruch in neue Zeile von: Oberschlumpf
Geschrieben am: 30.07.2014 11:49:02

Hi Steffen

Ist die Nachbarspalte frei, oder welche Spalte ist frei?

Hintergrund:
- die Texte/Zelle von den Zeilenumbrüchen "befreien" und in die Nachbarzellen untereinander einfügen
- wenn alles fertig, Inhalte aus der Hilfsspalte ausschneiden + in Ursprungsspalte wieder einfügen
- das Ganze kann man nicht direkt in einem Schritt in der Ursprungsspalte durchführen, weil ja die Inhalte in den Folgezeilen (noch mit Umbruch) dann überschrieben werden

Ciao
Thorsten


  

Betrifft: AW: Werte aus Zeilenumbruch in neue Zeile von: Steffen
Geschrieben am: 30.07.2014 12:19:10

Hallo Thorsten,

leider sind die Nachbarspalten alle besetzt bzw. die danebenliegende Spalte ist auch von diesem Problem betroffen. Erst ab der Spalte BK ist wieder etwas frei.

Also verstehe ich das richtig, dass man sozusagen alles erstmal vorbereitet und dann wieder einfügt an der betroffenen Stelle. Kann man das auch so realisieren dass Zeilen aus der Spalte die keine Zeilenumbrüche enthalten nicht überschrieben werden?

Ich hänge mal zur Übersicht eine kleine Beispieldatei mit dran.

https://www.herber.de/bbs/user/91786.xlsx


Gruß
Steffen


  

Betrifft: AW: Werte aus Zeilenumbruch in neue Zeile von: Rudi Maintaire
Geschrieben am: 30.07.2014 12:15:15

Hallo,
Überschrift in A1, Zellen ab A2

Sub aaa()
  Dim arr, arrErg(), Tmp, i As Integer, j As Integer, n As Integer
  arr = Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))
  ReDim arrErg(1 To 1, 1 To 1)
  arrErg(1, 1) = Cells(1, 1)
  For i = LBound(arr) To UBound(arr)
    Tmp = Split(arr(i, 1), vbLf)
    n = UBound(arrErg, 2)
    ReDim Preserve arrErg(1 To 1, 1 To n + UBound(Tmp) + 1)
    For j = 0 To UBound(Tmp)
      arrErg(1, n + j + 1) = Tmp(j)
    Next
  Next
  arrErg = WorksheetFunction.Transpose(arrErg)
  Cells(1, 1).Resize(UBound(arrErg)) = arrErg
End Sub

Gruß
Rudi


  

Betrifft: AW: Werte aus Zeilenumbruch in neue Zeile von: Steffen
Geschrieben am: 30.07.2014 12:20:40

Hallo Rudi,

ich probier das gleich mal aus!

Gruß
Steffen


  

Betrifft: AW: Werte aus Zeilenumbruch in neue Zeile von: Steffen
Geschrieben am: 30.07.2014 12:36:17

Hallo Rudi,

also es funktioniert einwandfrei, das ist sehr beruhigend :) Danke Vielmals!

Gibt es den die Möglichkeit statt einer Überschrift eine komplette Spalte damit durchlaufen zu lassen bzw. mehrere Zellen in einer Spalte von oben bis unten abzuklappern?


  

Betrifft: AW: Werte aus Zeilenumbruch in neue Zeile von: Dieter Klemke
Geschrieben am: 30.07.2014 13:19:31

Hallo Steffen,
du kannst das mit dem folgenden Makro machen

Sub Trennen()
  Dim anfangsZeile As Long
  Dim letzteZeile As Long
  Dim strTeilstück As String
  Dim strRest As String
  Dim pos As Long
  Dim spaltenBuchstabe As String
  Dim ws As Worksheet
  Dim zeile As Long
  
  '******************************
  anfangsZeile = 2
  spaltenBuchstabe = "C"
  '******************************
  Set ws = ThisWorkbook.Worksheets(1)
  letzteZeile = ws.Cells(ws.Rows.Count, spaltenBuchstabe).End(xlUp).Row
  If letzteZeile < anfangsZeile Then Exit Sub
  For zeile = letzteZeile To anfangsZeile Step -1
    strRest = ws.Cells(zeile, spaltenBuchstabe)
    pos = 0
    Do
      pos = InStrRev(strRest, vbLf)
      If pos = 0 Then
        ws.Cells(zeile, spaltenBuchstabe) = strRest
        Exit Do
      End If
      strTeilstück = Right$(strRest, Len(strRest) - pos)
      strRest = Left$(strRest, pos - 1)
      ws.Rows(zeile + 1).Insert
      ws.Cells(zeile + 1, spaltenBuchstabe) = strTeilstück
    Loop Until pos = 0
  Next zeile

Anfangszeile und Spaltenbuchstaben legst du im Programm fest.

Viele Grüße
Dieter


  

Betrifft: AW: Werte aus Zeilenumbruch in neue Zeile von: Steffen
Geschrieben am: 30.07.2014 13:46:05

Hallo Dieter,

danke für deine Bemühung! Leider bin ich noch etwas schwer von Begriff was Makros angeht.
Ich habe dem Code jetzt ein End Sub darunter gesetzt und es mit den Startwerten Q und 12 initialisiert (erste Zelle dieser Spalte wo mein besagtes Problem auftritt) und durchlaufen lassen.
Leider passiert nichts wenn ich das Makro ausführe. Woran könnte das liegen?

Gruß Steffen


  

Betrifft: AW: Werte aus Zeilenumbruch in neue Zeile von: Dieter Klemke
Geschrieben am: 30.07.2014 14:26:55

Hallo Steffen,

das letzte Statement (End Sub) hatte ich leider nicht mitkopiert. Es gehört direkt hinter "Next zeile".
Das Makro geht davon aus, dass das zu bearbeitende Blatt das erste Blatt deiner Mappe ist.
Du kannst eine der folgenden Aktionen machen, um das Makro zu veranlassen, mit deinem Blatt zu arbeiten.
- du verschiebst dein Blatt an Position 1
- du änderst das Statement "Set ws = ThisWorkbook.Worksheets(1)" in "Set ws = ThisWorkbook.Worksheets(7)", wenn dein Blatt an Position 7 steht.
- du änderst das Statement "Set ws = ThisWorkbook.Worksheets(1)" in "Set ws = ThisWorkbook.Worksheets("Mein Blatt)", wenn dein Blatt den Namen "Mein Blatt" hat.

Um zu testen, ob das Makro ausgeführt wird, schreibst du hinter "Set ws = ..." das Statement
MsgBox "Blatt " & ws.Name

Viele Grüße und viel Erfolg
Dieter


  

Betrifft: AW: Werte aus Zeilenumbruch in neue Zeile von: Steffen
Geschrieben am: 30.07.2014 14:48:29

Hallo Dieter,

das ist genial! Hab tausend Dank!!

Ich habe nur noch eine letzte Frage. Kann ich das auch mit 2 Spalten gleichzeitig machen?
Die daneben liegende Spalte müsste auch mit dem Makro durchlaufen werden.
Nur habe ich dann sowohl in der ersten als auch in der zweiten Spalte entsprechen neue Zeilen hinzugefügt.

Beide Spalten beinhalten in jeder Zeile die gleiche Anzahl an Wörtern.


Beste Grüße und Danke nochmals
Steffen


  

Betrifft: AW: Werte aus Zeilenumbruch in neue Zeile von: Dieter Klemke
Geschrieben am: 30.07.2014 15:30:20

Hallo Steffen,

das kannst du mit dem folgenden Makro machen

Sub Trennen_2()
  Dim anfangsZeile As Long
  Dim anzNeuZeilen As Long
  Dim letzteZeile As Long
  Dim strTeilstück As String
  Dim strRest As String
  Dim pos As Long
  Dim spalteDaneben As Long
  Dim spaltenBuchstabe As String
  Dim ws As Worksheet
  Dim zeile As Long
  
  '******************************
  anfangsZeile = 2
  spaltenBuchstabe = "C"
  '******************************
  Set ws = ThisWorkbook.Worksheets(1)
  spalteDaneben = ws.Cells(1, spaltenBuchstabe).Column + 1
  letzteZeile = ws.Cells(ws.Rows.Count, spaltenBuchstabe).End(xlUp).Row
  If letzteZeile < anfangsZeile Then Exit Sub
  For zeile = letzteZeile To anfangsZeile Step -1
    ' 1. Spalte
    strRest = ws.Cells(zeile, spaltenBuchstabe)
    pos = 0
    Do
      pos = InStrRev(strRest, vbLf)
      If pos = 0 Then
        ws.Cells(zeile, spaltenBuchstabe) = strRest
        Exit Do
      End If
      strTeilstück = Right$(strRest, Len(strRest) - pos)
      strRest = Left$(strRest, pos - 1)
      ws.Rows(zeile + 1).Insert
      ws.Cells(zeile + 1, spaltenBuchstabe) = strTeilstück
    Loop Until pos = 0
    ' 2. Spalte
    strRest = ws.Cells(zeile, spalteDaneben)
    pos = 0
    anzNeuZeilen = 0
    Do
      pos = InStr(strRest, vbLf)
      If pos = 0 Then
        ws.Cells(zeile + anzNeuZeilen, spalteDaneben) = strRest
        Exit Do
      End If
      strTeilstück = Left$(strRest, pos - 1)
      strRest = Right$(strRest, Len(strRest) - pos)
      ws.Cells(zeile + anzNeuZeilen, spalteDaneben) = strTeilstück
      anzNeuZeilen = anzNeuZeilen + 1
    Loop Until pos = 0
  Next zeile
End Sub
Viele Grüße
Dieter


  

Betrifft: AW: Werte aus Zeilenumbruch in neue Zeile von: Steffen
Geschrieben am: 30.07.2014 15:54:08

Klasse Forum, Dieter du hast mir den Tag gerettet!

Hab vielen vielen vielen Dank!!


Beste Grüße
Steffen


 

Beiträge aus den Excel-Beispielen zum Thema "Werte aus Zeilenumbruch in neue Zeile"