Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Wenn-Dann/Vergleich/SVerweis
#11
Hallo Elsbeth,

so wie ich das sehe, ist das 1. Blatt (Übersicht Mitarbeiter) uninteressant.
Es geht doch nur um das 2. und 3. Blatt.
Meine Frage ist: Sind die ÜMA in 2. und 3. immer gleich oder können es auch verschiedene sein,
also dass eine Nummer auch nur in einem Blatt vorkommen kann?

Gruß Uwe
Antworten Top
#12
Hi Uwe,

die ÜMA sind zu den Namen immer gleich (ist praktisch die Personalnummer) allerdings können in den Tabellenblättern verschiedene Mitarbeiter stehen (mal mehr, mal weniger), Mitarbeiter XYZ mit Personalnummer 12345 kann also in der Urlaubsliste stehen, muss aber nicht unbedingt in der Zeitenliste stehe, weil er Urlaub hatte.

Ich wäre Dir wirklich dankbar, wenn Du mir ein Makro zaubern könntest; die original Tabellen haben bis zu 4.000 Datensätze und die mit der "Hand am Arm" zu bearbeiten ist ätzend und die Fehlerquote sehr hoch.

Vielen Dank & Grüße
Elsbeth
Antworten Top
#13
Hallo Elsbeth,

ich beziehe mich genau auf Deine Beispielmappe.
Tabelle5 ist gleich Register 5 (Tabelle2).
Code:
Sub Zusammenfassung()
  Dim rngBereich As Range
  Tabelle4.Rows("2:" & Rows.Count).Delete
  Tabelle5.Cells.Delete
  Tabelle5.Cells(1, 1).Value = "ÜMA"
  With Tabelle2
    Set rngBereich = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
  End With
  If rngBereich.Rows.Count > 1 Then
    Tabelle5.Cells(2, 1).Resize(rngBereich.Rows.Count - 1).Value = _
      rngBereich.Resize(rngBereich.Rows.Count - 1).Offset(1).Value
  End If
  With Tabelle3
    Set rngBereich = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
  End With
  If rngBereich.Rows.Count > 1 Then
    Tabelle5.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(rngBereich.Rows.Count - 1).Value = _
      rngBereich.Resize(rngBereich.Rows.Count - 1).Offset(1).Value
  End If
  With Tabelle5
    .Columns(1).AdvancedFilter Action:=xlFilterCopy, Unique:=True, CopyToRange:=Tabelle4.Cells(2, 1)
  End With
  With Tabelle4
    .Rows(2).Delete
    Set rngBereich = .Cells(2, 1).CurrentRegion
  End With
  Set rngBereich = rngBereich.Resize(rngBereich.Rows.Count - 1).Offset(1)
  With rngBereich
    .Columns(2).Formula = "=VLOOKUP(A2,'Übersicht Mitarbeiter'!A:B,2,0)"
    .Columns(6).Formula = "=VLOOKUP($A2,'Saldo Urlaubskonto'!A:G,7,0)"
    .Columns(7).Formula = "=VLOOKUP($A2,'Saldo Zeitkonto '!A:D,4,0)"
    On Error Resume Next
    .Cells.SpecialCells(xlCellTypeFormulas, 16) = ""
    On Error GoTo 0
    .Value = .Value
  End With
End Sub

Gruß Uwe


Angehängte Dateien
.xls   Test Datei.xls (Größe: 59 KB / Downloads: 4)
Antworten Top
#14
Hallo Uwe,

vielen Dank für Deine Mühe!!

Leider funktioniert das Makro nur in der Test Liste, nicht in meiner großen Liste.

Wenn ich das Makro übertrage, tauchen nur die ÜMA Nr. & die dazugehörigen Werte auf aber keine Namen. Was ich darüber hinaus heute erfahren habe, es ist doch wichtig, dass in der Auswertung auch folgende Daten "Meister" "Kurzzeichen" "Kost.-MG" aus Tabelle 1 (Übersicht Mitarbeiter) aufgeführt werden.

Da ich so überhaupt keine Ahnung von Makros habe, denke ich, ich muss bestimmt nur eine Kleinigkeit ändern. Könntest Du mir damit bitte nochmals behilflich sein.

Nochmals Vielen Dank!!!
Elsbeth
Antworten Top
#15
Hallo Elsbeth,

wenn die Namen nicht kommen, stimmt der Registername des Blattes mit der Komplettliste nicht
oder die Nummern sind da anders eingetragen/formatiert?

Hier werden die Daten aus den verschiedenen Blättern mit ganz normalen SVERWEIS()-Formeln geholt:

With rngBereich
.Columns(2).Formula = "=VLOOKUP(A2,'Übersicht Mitarbeiter'!A:B,2,0)"
.Columns(6).Formula = "=VLOOKUP($A2,'Saldo Urlaubskonto'!A:G,7,0)"
.Columns(7).Formula = "=VLOOKUP($A2,'Saldo Zeitkonto '!A:D,4,0)"

Genau da müssten dann auch für die noch nicht berücksichtigten Felder entsprechende Zeilen eingefügt werden.

Ändere mal diesen Bereich

Code:
With rngBereich
    .Columns(2).Formula = "=VLOOKUP(A2,'Übersicht Mitarbeiter'!A:B,2,0)"
    .Columns(6).Formula = "=VLOOKUP($A2,'Saldo Urlaubskonto'!A:G,7,0)"
    .Columns(7).Formula = "=VLOOKUP($A2,'Saldo Zeitkonto '!A:D,4,0)"
    On Error Resume Next
    .Cells.SpecialCells(xlCellTypeFormulas, 16) = ""
    On Error GoTo 0
    .Value = .Value
  End With

durch mit Hochkommas auskommentierte Zeilen:

Code:
With rngBereich
    .Columns(2).Formula = "=VLOOKUP(A2,'Übersicht Mitarbeiter'!A:B,2,0)"
    .Columns(6).Formula = "=VLOOKUP($A2,'Saldo Urlaubskonto'!A:G,7,0)"
    .Columns(7).Formula = "=VLOOKUP($A2,'Saldo Zeitkonto '!A:D,4,0)"
'    On Error Resume Next
'    .Cells.SpecialCells(xlCellTypeFormulas, 16) = ""
'    On Error GoTo 0
'    .Value = .Value
  End With

Nun bleiben die Formeln in den Zellen stehen und Fehlerwerte wie #NV werden nicht gelöscht.
So kannst Du besser prüfen, was faul ist.

Gruß Uwe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste