Anzeige
Archiv - Navigation
1928to1932
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

Auslesen Zellen mit Zeilenumbruch

Auslesen Zellen mit Zeilenumbruch
07.05.2023 18:54:17
Tom

Liebes Forum. Leider stehe ich vor einem Problem, welches schwierig zu lösen ist und ich würde mich über Eure Hilfe freuen. Aktuell bekomme ich einen längeren Report im PDF, welchen ich jeweils mit Acrobat Pro in Excel umwandle und bearbeite. Bei der Umwandlung in Excel bekomme ich Zeilen mit Umbruch rein. Diese spalte ich täglich händisch auf um im Anschluss Berechnungen zu erstellen. Das ist sehr zeitintensiv und auch fehleranfällig. Gibt es eine Möglichkeit, unter Zeile 2 eine leere Zeile hinzuzufügen (Zeile 3) und die Werte aus Zeile 2 aufzuspalten und separat in 2 Zeilen (Zeile 2 und 3) darzustellen? So dass eine «stufenlose» Tabelle entsteht?

Über Eure Hilfe und Anregungen bedanke ich mich im Voraus!

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

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
zellweise
07.05.2023 21:33:58
lupo1
A5: =WENNFEHLER(WENNFEHLER(--TEXTTEILEN(A3;;ZEICHEN(10));TEXTTEILEN(A3;;ZEICHEN(10)));"")


AW: Auslesen Zellen mit Zeilenumbruch
07.05.2023 21:44:00
onur
Es ist nicht nur der Zeilenumbruch. In A1 (z.B.) sind nicht nur zwei Zeilen, sondern auch noch eine Zahl drangeklebt.
Guckst du hier:
https://www.herber.de/bbs/user/159087.xlsm
Die Formatierungen kannst du selbst machen.


AW: Auslesen Zellen mit Zeilenumbruch
09.05.2023 13:41:21
Tom
Hallo zusammen. Vielen Dank für Eure Hilfe, ihr glaubt nicht wie viel Zeit mir dadurch erspart wird.
Ich habe jetzt das Macro von Onur probiert und es funkt. perfekt. Nur noch eine kleine Ergänzung: Die Werte aus der Zelle J1 und K1 gehören dann quasi in die neu eingefügte Zeile (J2 und K2). Könnte dies im Macro noch berücksichtigt werden? Aktuell verbleiben die Werte in J1 und K1.
Nochmals vielen Dank! Gruss Tom


Anzeige
AW: Auslesen Zellen mit Zeilenumbruch
09.05.2023 14:29:20
Pappawinni
Ich habs jetzt doch nochmal inplace probiert....
Für die Testdaten jedenfalls sieht das Ergebnis nicht so schlecht aus.


Sub MyCSVRepair()
     
 Dim i As Long
 Dim lastRow As Long
 Dim lastCol As Long
 Dim lngL As Long
 Dim lngP As Long
 Dim bolFound As Boolean
 Dim rngS As Range
 Dim oCell As Range
 Dim strDecChar As String
 Dim strTestNum As String
 Dim wsA As Worksheet
 Dim aF() As Variant

  
 
 strDecChar = IIf(IsNumeric(",1"), ",", ".")
 strtoreplchar = IIf(IsNumeric(",1"), ".", ",")
 
 Set wsA = ThisWorkbook.Sheets("Sheet1")
 lastRow = wsA.UsedRange.End(xlDown).Row
 lastCol = wsA.UsedRange.Columns.Count
 
 ReDim aF(lastCol)
 
 i = 1
 
 Do
     DoEvents
     Set rngS = Range(wsA.Cells(i, 1), wsA.Cells(i, lastCol))
     bolFound = False
     For Each oCell In rngS
         bolFound = IIf(InStr(oCell.Value, vbLf) > 0, True, False)
         If bolFound Then Exit For
     Next
     If bolFound Then
         i = i + 1
         wsA.Rows(i).Insert
         For Each oCell In rngS
             If InStr(oCell.Value, vbLf) Then
               oCell.Offset(1, 0).Value = Split(oCell.Text, vbLf)(1)
               oCell.Value = Split(oCell.Value, vbLf)(0)
             Else
                If oCell.VerticalAlignment = xlBottom Then
                    oCell.Offset(1, 0).Value = oCell.Value
                    oCell.Value = ""
                End If
             End If
             If oCell.MergeCells Then
                oCell.UnMerge
                lngL = Len(oCell.Value)
                lngP = InStrRev(oCell.Value, " ")
                strTestNum = Replace(Right(oCell.Value, lngL - lngP), strtoreplchar, strDecChar)
                If IsNumeric(strTestNum) Then
                    oCell.Offset(0, 1).FormulaLocal = strTestNum
                    oCell.Value = IIf(lngP > 0, Left(oCell.Value, lngP - 1), "")
                End If
                lngL = Len(oCell.Offset(1, 0).Value)
                lngP = InStrRev(oCell.Offset(1, 0).Value, " ")
                strTestNum = Replace(Right(oCell.Offset(1, 0).Value, lngL - lngP), strtoreplchar, strDecChar)
                If IsNumeric(strTestNum) Then
                    oCell.Offset(1, 1).FormulaLocal = strTestNum
                    oCell.Offset(1, 0).Value = IIf(lngP > 0, Left(oCell.Offset(1, 0).Value, lngP - 1), "")
                End If
             End If
         Next
         With rngS.Offset(1, 0).EntireRow
            .WrapText = False
            .HorizontalAlignment = xlGeneral
            .VerticalAlignment = xlCenter
            .AutoFit
         End With
     Else
         For Each oCell In rngS
             If oCell.MergeCells Then
                oCell.UnMerge
                lngL = Len(oCell.Value)
                lngP = InStrRev(oCell.Value, " ")
                strTestNum = Replace(Right(oCell.Value, lngL - lngP), strtoreplchar, strDecChar)
                If IsNumeric(strTestNum) Then
                    oCell.Offset(0, 1).FormulaLocal = strTestNum
                    oCell.Value = IIf(lngP > 0, Left(oCell.Value, lngP - 1), "")
                End If
             Else
                If Not IsEmpty(oCell.Value) Then
                    aF(oCell.Column - 1) = oCell.NumberFormat
                End If
             End If
         Next
     End If
     With rngS.EntireRow
        .WrapText = False
        .VerticalAlignment = xlCenter
        .HorizontalAlignment = xlGeneral
        .AutoFit
     End With
     lastRow = wsA.UsedRange.End(xlDown).Row
     If i = lastRow Then
        For Each oCell In rngS
           If Not aF(oCell.Column - 1) = "" Then
              oCell.EntireColumn.NumberFormat = aF(oCell.Column - 1)
           End If
        Next
     End If
     i = i + 1
 Loop Until i > lastRow
 
 End Sub



Anzeige
AW: Auslesen Zellen mit Zeilenumbruch
09.05.2023 16:21:24
Pappawinni
Weiß nicht, ob der Kollege da helfen will


AW: Auslesen Zellen mit Zeilenumbruch
09.05.2023 17:50:19
onur
Nach deiner Erläuterung gehören die NICHT in die Zeile darunter. Da ist kein Zeilenumbruch. Die sind nur "untenbündig" formatiert.


AW: Auslesen Zellen mit Zeilenumbruch
10.05.2023 11:51:23
Tom
Stimmt Onur, hab das Excel File falsch aufbereitet. Die Daten in den Zellen J1 und K1 sind auch mit einem Zeilenumbruch.


AW: Auslesen Zellen mit Zeilenumbruch
10.05.2023 12:25:43
onur
Dann läuft das auch mit meinem Makro.


AW: Auslesen Zellen mit Zeilenumbruch
10.05.2023 16:34:06
Pappawinni
Mich hätte jetzt schon auch interessiert, ob es mein Macro getan hätte :(


AW: Auslesen Zellen mit Zeilenumbruch
10.05.2023 17:39:58
onur
Häääh? Wie soll das denn gehen?
Hast nicht du selbst geschrieben : "Vergiss es, in den verbunden Zellen hängt bei den Bananen noch ne Zahl drann, die hab ich übersehen....Ich hab das jedenfalls nicht berücksichtigt."


Anzeige
AW: Auslesen Zellen mit Zeilenumbruch
10.05.2023 18:24:57
Pappawinni
Ich hatte parallel den Thread nochmal als offen markiert, damit er dich vielleicht eher anspringt..


AW: Auslesen Zellen mit Zeilenumbruch
07.05.2023 22:09:53
Pappawinni
Ich weiss nichts von einer drangeklebten Zahl....bh...


Sub Unit()
    
Dim i As Long
Dim bolFound As Boolean
Dim rngS As Range
Dim oCell As Range


For i = 1 To ActiveSheet.UsedRange.End(xlDown).Row

    Set rngS = Range(Cells(i, 1), Cells(i, Columns.Count).End(xlToLeft))

    bolFound = False
    For Each oCell In rngS
        bolFound = IIf(InStr(oCell.Value, vbLf) > 0, True, False)
        If bolFound Then Exit For
    Next
    If bolFound Then
        i = i + 1
        Rows(i).Insert
        For Each oCell In rngS
            If InStr(oCell.Value, vbLf) Then
              oCell.Offset(1, 0) = Split(oCell.Value, vbLf)(1)
              oCell.Value = Split(oCell.Value, vbLf)(0)
            Else
              oCell.Offset(1, 0) = oCell.Value
              oCell.Value = ""
            End If
        Next
        rngS.Rows.AutoFit
        rngS.Offset(1, 0).Rows.AutoFit
    End If
Next

End Sub




Anzeige
AW: Auslesen Zellen mit Zeilenumbruch
07.05.2023 22:33:29
Pappawinni
Vergiss es,
in den verbunden Zellen hängt bei den Bananen noch ne Zahl drann, die hab ich übersehen.
Wer weiss, was da noch passieren kann.
Ich hab das jedenfalls nicht berücksichtigt.


AW: Auslesen Zellen mit Zeilenumbruch
08.05.2023 11:27:26
Daniel
Hi

vielleicht mit folgendem Vorgehen:
1. kopiere die Tabelle an eine andere Stelle mit dem Vorgang "Transponieren", Zeilen sind jetzt Spalten
2. füge nach jeder Spalte, die du Teilen willst, eine zusätzliche Leerspalte ein, bzw soviele wie benötigt (Zeilen in der Zelle - 1)
3. führe mit jeder Spalte, die getrennt werden soll, die Funktion DATEN - DATENTOOLS - TEXT IN SPALTEN aus. verwende den Zeilenumbruch als anderes Trennzeichen, die Eingabe in das Feld erfolgt durch die Tastenkombination ALT+010
das musst du mit jeder Spalte einzeln durchführen.
4. kopiere dann den Bereich wieder und füge ihn an anderer Stelle wieder mit Transponieren ein.
5. die angehängten 1000 kannst du dann mit einem weitern TEXT IN SPALTEN in die Spalte B befördern.
ein Problem ist allerdings, dass es nicht eindeutig ist, zu welcher Zeile die Einzelwerte in Spalte J und K gehören. du hast sie der Zeile 2 zugeordnet, inhaltlich gehören sie aber in Zeile 1, weil kein Zeichen(10) davor steht.

hier mal der Code für das von mir beschriebene Vorgehen:
Sub test()
Dim rng As Range
Dim sp As Long
Dim Anz As Long
Dim Zelle As Range
Dim Quelle As Range
Dim Ziel As Range

Set Quelle = Range("a1")
Set Ziel = Quelle.Offset(0, Quelle.CurrentRegion.Columns.Count + 1)


Quelle.CurrentRegion.Copy
Ziel.PasteSpecial xlPasteAll, Transpose:=True
Application.DisplayAlerts = False

For sp = Ziel.End(xlToRight).Column To Ziel.Column Step -1
    With Cells(1, sp)
        Anz = Len(.Value) - Len(Replace(.Value, Chr(10), ""))
        If Anz > 0 Then
            .Offset(0, 1).Resize(, Anz).EntireColumn.Insert
            .EntireColumn.TextToColumns Destination:=.Cells, DataType:=xlDelimited, _
                Tab:=False, Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:=Chr(10), _
                DecimalSeparator:=",", ThousandsSeparator:=".", TrailingMinusNumbers:=False
        End If
    End With
Next

Ziel.CurrentRegion.Copy
Quelle.PasteSpecial xlPasteAll, Transpose:=True
Application.DisplayAlerts = True

For Each Zelle In Range(Quelle, Cells(Rows.Count, 1).End(xlUp))
    If Zelle.Value Like "*#" Then
        Anz = InStrRev(Zelle.Value, " ")
        Zelle.Offset(0, 1).FormulaLocal = Mid(Zelle.Value, Anz + 1)
        Zelle.Value = RTrim(Left(Zelle.Value, Anz))
    End If
Next
        
End Sub
das von mir beschriebene Problem ist hier aber noch nicht gelöst.

Gruß Daniel

Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige