Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1640to1644
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

Shit In - Good Out?

Shit In - Good Out?
23.08.2018 16:21:56
Toastie
Hallo zusammen
ich bin leider ein absoluter Makro-Noob und hoffe dass die Problemstellung für euch Experten ein Klax ist. Im Endergebnis soll man eine zweispaltige Tabelle sehen. Spalte A = Datum / Spalte B = Kommentar. Das Problem ist allerdings, dass die Daten in der Datei nicht sauber strukturiert stehen. Und jetzt soll ein Makro Abhilfe schaffen. Es gibt beispielsweise
a) Zeilen, die mit einem Datumswert beginnen und in der selben Zelle den Kommentar beinhalten (siehe Zeile 1 im File-Upload)
b) Zeilen, die mit dem Datumswert erst nach 2x Leerzeichen beginnen und ebenfalls einen Kommentar beinhalten (siehe Zeile 2 im File Upload)
c) Zeilen die überhaupt kein Datumswert haben und eigentlich ein Zeilenumbruch der vorhergehenden Zeile sind. Die gehören in die Kommentarspalte der vorhergehenden Zeile (siehe Zeile 3 im File Upload)
d) Leere Zeilen die ignoriert werden können (siehe Zeile 4 im File Upload)
e) Zeilen die wieder gemäß b) strukturiert sind (siehe Zeile 5 im File Upload)
Also von der Quelldatei sozusagen "Shit-In". Ich hoffe ihr könnt mir helfen "Good-Out" zu produzieren :)
Besten Dank
Toastie
File-Upload https://www.herber.de/bbs/user/123523.xlsx

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Durchfall
23.08.2018 17:18:30
ChrisL
Hi
Warum mit Makro, wenn du kein VBA kannst...
Die Formel sind mit angegeben.
Sub t()
Dim lZ As Long
With ActiveSheet
lZ = .Cells(Rows.Count, 1).End(xlUp).Row
With .Range("B1:B" & lZ)
'=WENN(ISTZAHL(LINKS(WECHSELN(GLÄTTEN(A1);".";"");8)*1);LINKS(GLÄTTEN(A1);10)*1;"")
.Formula = "=IF(ISNUMBER(LEFT(SUBSTITUTE(TRIM(A1),""."",""""),8)*1),LEFT(TRIM(A1),10)*1,"""")"
.Value = .Value
End With
With .Range("C1:C" & lZ)
'=WENN(B1="";GLÄTTEN(A1);RECHTS(GLÄTTEN(A1);LÄNGE(GLÄTTEN(A1))-11))
.Formula = "=IF(B1="""",TRIM(A1),RIGHT(TRIM(A1),LEN(TRIM(A1))-11))"
.Value = .Value
End With
End With
End Sub
cu
Chris
Anzeige
AW: Durchfall
24.08.2018 07:19:05
Toastie
Hi Chris!
DANKE! Aber ein Makro muss es für c) und d) sein. Das geht nicht über Formeln. Hier der File-Upload wie es am Ende aussehen sollte:
https://www.herber.de/bbs/user/123532.xlsx
Viele Grüße
Toastie
AW: Durchfall
24.08.2018 07:24:22
Toastie
PS: Bei d) habe ich mich möglicherweise missverständlich ausgedrückt. Mit "ignorieren" meinte ich, dass leere Zeilen überflüssig sind und daher gelöscht werden sollen.
noch ein Wenn-Dann Förmelchen...
24.08.2018 08:45:01
ChrisL
Hi
... und leere Zeilen löschen geht natürlich auch.
Sub t()
Dim lZ As Long
With ActiveSheet
lZ = .Cells(Rows.Count, 1).End(xlUp).Row
With .Range("B1:B" & lZ)
'=WENN(ISTZAHL(LINKS(WECHSELN(GLÄTTEN(A1);".";"");8)*1);LINKS(GLÄTTEN(A1);10)*1;"")
.Formula = "=IF(ISNUMBER(LEFT(SUBSTITUTE(TRIM(A1),""."",""""),8)*1),LEFT(TRIM(A1),10)*1,"""")"
.Value = .Value
End With
With .Range("C1:C" & lZ)
'=WENN(B1="";GLÄTTEN(A1);RECHTS(GLÄTTEN(A1);LÄNGE(GLÄTTEN(A1))-11))
.Formula = "=IF(B1="""",TRIM(A1),RIGHT(TRIM(A1),LEN(TRIM(A1))-11))"
.Value = .Value
End With
With .Range("D1:D" & lZ)
'=WENN(B2="";C1&" "&C2;C1)
.Formula = "=IF(B2="""",C1&"" ""&C2,C1)"
.Value = .Value
End With
.Columns(2).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
.Columns(3).Delete
End With
End Sub
cu
Chris
Anzeige
AW: noch ein Wenn-Dann Förmelchen...
24.08.2018 11:09:03
Toastie
Du Fuchs, das möchte ich auch können! DANKE Chris!
Da bleibt mir wohl nur "fragen, zuschauen und lernen". Oder kannst du mir eine bestimmte Lektüre besonders empfehlen?
AW: noch ein Wenn-Dann Förmelchen...
24.08.2018 11:16:19
ChrisL
Hi
Danke für die Rückmeldung. Ich bin Autodidakt, aber Literaturempfehlungen findest du im Archiv.
cu
Chris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige