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

Konsolidieren von Text

Konsolidieren von Text
03.01.2018 11:04:04
Text
Hallo zusammen,
ich suche eine Möglichkeit um Zeilen mit Text auf Grundlage von 2 Vorbedingungen zu konsolidieren:
Userbild
  • Schreibe alle Tätigkeiten einer Person, die sie an einem Datum erfüllt hat in eine Zelle mit Trennung "; "

  • Im nächsten Schritt soll die Funktion per Kontrollkästchen aktivierbar sein, da die sie nur optional sein.
    Vielen Dank im Voraus!
    Jome

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

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Konsolidieren von Text
    03.01.2018 11:54:57
    Text
    Hallo Jome,
    falls du nicht zwingend auf die Darstellung der Tätigkeiten in einer Zelle angewiesen bist, dann kanst du auch mit einem Pivot-Tabellenbericht arbeiten mit den Zeilenfeldern Datum Person Tätigkeit .
    Wenn die Anzahl der unterschiedlichen Tätigkeiten sich in Grenzen hält, dann könntest du die Tätigkeit auch als Spaltenfeld festlegen.
    Mit Feld Tätigkeit und Funktion Anzahl im Datenbereich und dem benutzerdefinierten Format "X";"X";"" für die Ergebnisse wird "angekreuzt" welche Tätigkeiten eine Person an dem Datum ausgeführt hat.
    Eine reine Formellösung ist möglich, erfordert aber einiges an Hilfsspalten und komplexe Formeln, um
    A: die Liste der Datums/Person-Werte zu ermitteln
    B: die Tätigkeiten den Werten aus A zusuordnen.
    Alsweitere Option kämen Makros/benutzerdefinierte Funktionen in Frage.
    Gruß
    Franz
    Anzeige
    AW: Konsolidieren von Text
    03.01.2018 13:02:12
    Text
    Hallo Franz,
    danke für Deine Rückmeldung.
    Da es sich um immer unterschiedliche Tätigkeiten handeln und diese zusammen innerhalb einer Zelle stehen müssen, werde ich wohl nicht um ein Makro herumkommen.
    Es handelt sich bei der Liste bereits um eine Abwandlung der ursprünglichen Rohdaten, sodass folgende Spalten mit jeweilig unterschiedlichen Funktionen hinterlegt sind:
    Datum|Tag|Kalenderwoche|Monat|Sprint|Mitarbeiter|Rolle|Tätigkeit|Skill-Level|Aktivität|Dauer|MT	Kosten|Faktura
    
    Diese Liste soll nun per Kontrollkästchen um die besagte Funktion erweitert werden.
    Da ich nur sehr rudimentäre Kenntnisse in VBA besitze, wäre um ein hilfreichen Ansatz sehr dankbar!
    VG,
    Jome
    Anzeige
    AW: Konsolidieren von Text
    03.01.2018 22:12:47
    Text
    Hallo Jome,
    hier ein entsprechendes Makro.
    Die Ergebnisdaten werden in einem anderen Tabellenblatt ausgegeben.
    Gruß
    Franz
    Sub Taetigkeiten_zusammenfassen()
    Dim wksData As Worksheet, wksTaet As Worksheet
    Dim Zeile_L As Long
    Dim Zeile As Long, Zeile1 As Long, varDatum, varMA, bolDelete As Boolean
    'Tabellenblatt mit den Daten setzen
    Set wksData = ActiveWorkbook.Worksheets("Daten") 'Blattame ggf. anpassen
    'Tabellenblatt mit den gruppierten Erggebnisdaten setzen
    Set wksTaet = ActiveWorkbook.Worksheets("Tätigkeiten") 'Blattame ggf. anpassen
    Application.ScreenUpdating = False
    With wksTaet
    .UsedRange.ClearContents
    .Columns(1).NumberFormat = "DD.MM.YYYY"
    End With
    With wksData
    Zeile_L = .Cells(.Rows.Count, 1).End(xlUp).Row
    'Datumswerte in Spalte A kopieren
    .Range(.Cells(1, 1), .Cells(Zeile_L, 1)).Copy
    wksTaet.Cells(1, 1).PasteSpecial Paste:=xlPasteValues
    'Datumswerte in Spalte F kopieren
    .Range(.Cells(1, 6), .Cells(Zeile_L, 6)).Copy
    wksTaet.Cells(1, 2).PasteSpecial Paste:=xlPasteValues
    'Taetigkeiten in Spalte H kopieren
    .Range(.Cells(1, 8), .Cells(Zeile_L, 8)).Copy
    wksTaet.Cells(1, 3).PasteSpecial Paste:=xlPasteValues
    End With
    With wksTaet
    Zeile_L = .Cells(.Rows.Count, 1).End(xlUp).Row
    'Daten sortieren
    With .Range(.Cells(1, 1), .Cells(Zeile_L, 3))
    .Sort Key1:=.Range("A1"), order1:=xlAscending, _
    Key2:=.Range("B1"), order2:=xlAscending, _
    Key3:=.Range("C1"), order3:=xlAscending, Header:=xlYes
    End With
    'Tätigkeiten von MA am Datum in jeweils 1. Zeile überragen
    For Zeile = 1 To Zeile_L + 1
    If varDatum  .Cells(Zeile, 1) Or varMA  .Cells(Zeile, 2) Then
    '1. Zeile, MA-Name und Datum merken wenn Name oder Datum wechselt
    Zeile1 = Zeile
    varDatum = .Cells(Zeile, 1).Value
    varMA = .Cells(Zeile, 2).Value
    Else
    'Tätigkeit in 1. Zeile in Spalte C hinzufügen
    .Cells(Zeile1, 3).Value = _
    .Cells(Zeile1, 3).Value & ";" & .Cells(Zeile, 3).Value
    'Inhalt in Zeile löschen
    .Rows(Zeile).ClearContents
    bolDelete = True 'merken, dass gelöscht wurde
    End If
    Next
    If bolDelete = True Then
    'leere Zeilen löschen
    With .Range(.Cells(1, 1), .Cells(Zeile_L, 1))
    .SpecialCells(xlCellTypeBlanks).EntireRow.Delete shift:=xlShiftUp
    End With
    End If
    .Activate
    .Range("A1").Select
    .Columns.AutoFit
    End With
    Application.ScreenUpdating = True
    End Sub
    

    Anzeige
    AW: Konsolidieren von Text
    04.01.2018 16:54:09
    Text
    Überragend! Vielen Dank!
    Wie wäre dann die Schleife, um nun noch die Stunden aus der Spalte K pro Datum pro Mitarbeiter zu summieren?
    Ideal wär es natürlich, wenn die Stunden vor den Tätigkeiten stehen würde, aber das ist nur optional.
    Soweit ist es klar, aber danach?
    VG,
    Jome
    
    sub Taetigkeiten_zusammenfassen()
    Dim wksData As Worksheet, wksTaet As Worksheet
    Dim Zeile_L As Long
    Dim Zeile As Long, Zeile1 As Long, varDatum, varMA, bolDelete As Boolean
    'Tabellenblatt mit den Daten setzen
    Set wksData = ActiveWorkbook.Worksheets("Overview") 'Blattame ggf. anpassen
    'Tabellenblatt mit den gruppierten Erggebnisdaten setzen
    Set wksTaet = ActiveWorkbook.Worksheets("Ergebnis") 'Blattame ggf. anpassen
    Application.ScreenUpdating = False
    With wksTaet
    .UsedRange.ClearContents
    .Columns(1).NumberFormat = "DD.MM.YYYY"
    End With
    With wksData
    Zeile_L = .Cells(.Rows.Count, 1).End(xlUp).Row
    'Datumswerte in Spalte A kopieren
    .Range(.Cells(22, 1), .Cells(Zeile_L, 1)).Copy
    wksTaet.Cells(1, 1).PasteSpecial Paste:=xlPasteValues
    'Datumswerte in Spalte F kopieren
    .Range(.Cells(22, 6), .Cells(Zeile_L, 6)).Copy
    wksTaet.Cells(1, 2).PasteSpecial Paste:=xlPasteValues
    'Taetigkeiten in Spalte H kopieren
    .Range(.Cells(22, 8), .Cells(Zeile_L, 8)).Copy
    wksTaet.Cells(1, 4).PasteSpecial Paste:=xlPasteValues
    'Stunden in Spalte K kopieren
    .Range(.Cells(22, 11), .Cells(Zeile_L, 11)).Copy
    wksTaet.Cells(1, 3).PasteSpecial Paste:=xlPasteValues
    End With
    

    Anzeige
    AW: Konsolidieren von Text
    05.01.2018 11:24:21
    Text
    Hallo Jome,
    sowie man die Zell-Texte mit "&" verketten kann, so kann man die Zahlen/Zeiten mit "+" addieren.
    Falls die Zeiten/Zahlen als Text in der Tabelle "Overviev" stehen, dann muss ggf. noch Wert-Konversionen mit CDate oder CDbl durchführen
    Entsprechende Code-Zeilen hab ich als Kommentar eingefügt.
    Gruß
    Franz
    Sub Taetigkeiten_zusammenfassen()
    Dim wksData As Worksheet, wksTaet As Worksheet
    Dim Zeile_L As Long
    Dim Zeile As Long, Zeile1 As Long, varDatum, varMA, bolDelete As Boolean
    'Tabellenblatt mit den Daten setzen
    Set wksData = ActiveWorkbook.Worksheets("Overview") 'Blattame ggf. anpassen
    'Tabellenblatt mit den gruppierten Erggebnisdaten setzen
    Set wksTaet = ActiveWorkbook.Worksheets("Ergebnis") 'Blattame ggf. anpassen
    Application.ScreenUpdating = False
    With wksTaet
    .UsedRange.ClearContents
    .Columns(1).NumberFormat = "DD.MM.YYYY"
    '        .Columns(3).NumberFormat = "#,##0.00"  '  wenn Dauer als Dezimalzahl
    .Columns(3).NumberFormat = "[h]:mm"     '  wenn Dauer als Uhrzeit
    End With
    With wksData
    Zeile_L = .Cells(.Rows.Count, 1).End(xlUp).Row
    'Datumswerte in Spalte A kopieren
    .Range(.Cells(22, 1), .Cells(Zeile_L, 1)).Copy
    wksTaet.Cells(1, 1).PasteSpecial Paste:=xlPasteValues
    'Datumswerte in Spalte F kopieren
    .Range(.Cells(22, 6), .Cells(Zeile_L, 6)).Copy
    wksTaet.Cells(1, 2).PasteSpecial Paste:=xlPasteValues
    'Taetigkeiten in Spalte H kopieren
    .Range(.Cells(22, 8), .Cells(Zeile_L, 8)).Copy
    wksTaet.Cells(1, 4).PasteSpecial Paste:=xlPasteValues
    'Stunden in Spalte K kopieren
    .Range(.Cells(22, 11), .Cells(Zeile_L, 11)).Copy
    wksTaet.Cells(1, 3).PasteSpecial Paste:=xlPasteValues
    End With
    With wksTaet
    Zeile_L = .Cells(.Rows.Count, 1).End(xlUp).Row
    'Daten sortieren
    With .Range(.Cells(1, 1), .Cells(Zeile_L, 4))
    .Sort Key1:=.Range("A1"), order1:=xlAscending, _
    Key2:=.Range("B1"), order2:=xlAscending, _
    Key3:=.Range("D1"), order3:=xlAscending, Header:=xlYes
    End With
    'Tätigkeiten von MA am Datum in jeweils 1. Zeile überragen
    For Zeile = 1 To Zeile_L + 1
    If varDatum  .Cells(Zeile, 1) Or varMA  .Cells(Zeile, 2) Then
    '1. Zeile, MA-Name und Datum merken wenn Name oder Datum wechselt
    Zeile1 = Zeile
    varDatum = .Cells(Zeile, 1).Value
    varMA = .Cells(Zeile, 2).Value
    If Not Zeile = 1 And Zeile 

    Anzeige
    AW: Konsolidieren von Text
    05.01.2018 13:56:17
    Text
    Damit kann ich arbeiten.
    Hab vielen Dank Franz!
    VG,
    jome

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige
    Archiv - Verwandte Themen
    Forumthread
    Beiträge