jerry0110
Erfahrenes Mitglied
Hallo zusammen,
ich arbeite mal wieder an einem Projekt. Ich lasse von unserm System CSV Dateien erstellen, die bestimmte Auswertungen beinhalten. Was jedoch nicht geht ist, dass die CSV Überchriften an den Anfang bringt und direkt mit der Auswertung beginnt.
Jetzt möchte ich gerne ca. 13 Reports mit einem Makro abfrühstücken. Hierzu habe ich in einer Exceltabelle alle Daten der einzelenen Report hinterlegt (Name des Reports, Emailadresse, Überschrift, etc).
1. Die CSV soll in eine Excel umgewandelt werden. (Kann ich).
2. Dann soll in der erstellen Excel eine Überchrift angelegt werden (Überchrift sind mehrere Wörter die mit ";" getrennt sind). Mit Split trenne ich die Überchrift. (Das bekomme ich auch noch hin) Und dann soll jedes Wort in eine Zelle von links nach rechts. (Das bekomme ich nicht hin).
3. Danach suchen und in andere Tabellenblätter sortieren (Bekomme ich hin).
4. Email erstellen (Bekomme ich hin)
Zu Punkt 2 habe ich beim Split folgendes:
Die letzte Zeile finden, macht für mich hier ja keinen Sinn, wohin damit ich mit dem Füllen der Zellen beginnen kann.
Hier hatte ich das mal gemacht (mit Hilfe von Yaslaw):
Dies war aber für eine schon vorhandene Überschrift die gesplittet wurde in die Anzahl der vorhandenen getrennten Inhalte mit "|".
Kann mir jemand hier einen Ansatz sagen, wie ich das lösen kann`?
ich arbeite mal wieder an einem Projekt. Ich lasse von unserm System CSV Dateien erstellen, die bestimmte Auswertungen beinhalten. Was jedoch nicht geht ist, dass die CSV Überchriften an den Anfang bringt und direkt mit der Auswertung beginnt.
Jetzt möchte ich gerne ca. 13 Reports mit einem Makro abfrühstücken. Hierzu habe ich in einer Exceltabelle alle Daten der einzelenen Report hinterlegt (Name des Reports, Emailadresse, Überschrift, etc).
1. Die CSV soll in eine Excel umgewandelt werden. (Kann ich).
2. Dann soll in der erstellen Excel eine Überchrift angelegt werden (Überchrift sind mehrere Wörter die mit ";" getrennt sind). Mit Split trenne ich die Überchrift. (Das bekomme ich auch noch hin) Und dann soll jedes Wort in eine Zelle von links nach rechts. (Das bekomme ich nicht hin).
3. Danach suchen und in andere Tabellenblätter sortieren (Bekomme ich hin).
4. Email erstellen (Bekomme ich hin)
Zu Punkt 2 habe ich beim Split folgendes:
Visual Basic:
Public Sub Sliptzaehlen()
Dim sStr As String
Dim Spl
Dim L As Long
sStr = Range("H4")
Spl = Split(sStr, ";")
MsgBox UBound(Spl) + 1 & " Elemente"
For L = 0 To UBound(Spl)
MsgBox Spl(L)
Next
End Sub
Die letzte Zeile finden, macht für mich hier ja keinen Sinn, wohin damit ich mit dem Füllen der Zellen beginnen kann.
Hier hatte ich das mal gemacht (mit Hilfe von Yaslaw):
Visual Basic:
Dim ws As Worksheet: Set ws = Worksheets("Bearbeitet")
Dim maxParts As Long
Dim rowNr As Long
Dim parts() As String
Dim col As Range
Dim colNrDelta As Long
'Spalte auswählen
Set col = ws.Columns(Application.Match("FIRMENNAME", Rows(1), 0))
'Den Replace durchführen
col.Replace Chr(10), "|"
'Anzahl neuer Spalten ermitteln. Massgebend ist das Feld mit den meisten |
For rowNr = 2 To xlsGetLastRow(ws)
parts = Split(ws.Cells(rowNr, col.Column), "|")
If UBound(parts) + 1 > maxParts Then maxParts = UBound(parts) + 1
Next rowNr
'Spalten hinzufügen und Titel setzen
For colNrDelta = maxParts To 1 Step -1
ws.Columns(col.Column + 1).Insert xlShiftToRight
ws.Cells(1, col.Column + 1).Value = ws.Cells(1, col.Column).Value & "(" & colNrDelta & ")"
Next colNrDelta
'Neue Felder abfüllen
For rowNr = 2 To xlsGetLastRow(ws)
parts = Split(ws.Cells(rowNr, col.Column), "|")
For colNrDelta = 1 To UBound(parts) + 1
ws.Cells(rowNr, col.Column + colNrDelta).Value = parts(colNrDelta - 1)
Next colNrDelta
Next rowNr
Set col = Nothing
Set ws = Nothing
Dies war aber für eine schon vorhandene Überschrift die gesplittet wurde in die Anzahl der vorhandenen getrennten Inhalte mit "|".
Kann mir jemand hier einen Ansatz sagen, wie ich das lösen kann`?