halbschuh107
Goto Top

Werte aus einer Tabelle vergleichen, einlesen und addieren

Hallo zusammen,

leider bin ich ein absoluter Anfänger und muss mit VBA gleich eine schwierige Aufgabe auf Arbeit lösen. Hoffe ihr könnt mir helfen.
Ich habe eine Übersichtstabelle mit Namen in Spalte A und eine Anzahl von Aufträgen in Spalte D stehen.

Eine zweite Ausleitungstabelle enthält alle Aufträge in Spalte H und alle Namen der Bearbeiter in Spalte B. Hier können Namen mehrfach vorkommen.

In der Übersichtstabelle sollen die alten Werte in Spalte D addiert werden, mit den Werten wenn sie in der Ausleitungstabelle stehen. Sonst soll der alte Wert einfach übernommen werden.

Gibt es da einen Lösungsweg für Anfänger?

Vielen Dank schon einmal für eure Mühe.

Schöne Grüße
Lars

Content-Key: 244849

Url: https://administrator.de/contentid/244849

Printed on: May 7, 2024 at 15:05 o'clock

Member: colinardo
colinardo Jul 29, 2014 updated at 08:52:49 (UTC)
Goto Top
Hallo Lars, Willkommen auf Administrator.de!
Dafür benötigst du noch nicht einmal VBA. Es reicht hier die Formel SummeWenn() mit der du die Summen der einzelnen Mitarbeiter in der Ausleitungstabelle aufsummierst und dann mit den Werten in Spalte D deiner Übersichtstabelle addierst.
Siehe dazu folgendes Demo-Sheet

VBA ist auch kein Problem. Da du aber nach einer Anfängerlösung suchst, ist die Formelvariante die am einfachsten zu implementierende face-wink
Falls du es dennoch in VBA benötigst, siehe dieses VBA-Demo-Sheet (Kommentare findest du im hinterlegten Code)

Sub Summierung()
    Dim ws1 As Worksheet, ws2 As Worksheet, rngNames As Range, rngSearch As Range, cell As Range, c As Range
    Set ws1 = Worksheets(1) 'Übersichtstabelle  
    Set ws2 = Worksheets(2) 'Ausleitungstabelle  
    Set rngNames = ws1.Range("A2", ws1.Cells(Rows.Count, 1).End(xlUp))  ' Bereich der Namen in der Übersichtstabelle  
    Set rngSearch = ws2.Range("B2", ws2.Cells(Rows.Count, 2).End(xlUp)) ' Bereich der Namen in der Ausleitungstabelle  
    ' Für jeden Namen in der Übersichtstabelle  
    For Each cell In rngNames
        'Suche den Namen in der Ausleitungstabelle  
        Set c = rngSearch.Find(cell.Value, LookIn:=xlValues, Lookat:=xlWhole)
        ' Wenn der Name gefunden wurde ...  
        If Not c Is Nothing Then
            firstAddress = c.Address
            ' Suche so lange weiter nach dem Namen bis er nicht mehr gefunden wird  
            Do
                ' Addiere die Werte der Zellen  
                cell.Offset(0, 3).Value = Int(cell.Offset(0, 3).Value) + Int(c.Offset(0, 6).Value)
                'Finde den nächsten Treffer  
                Set c = rngSearch.FindNext(c)
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
    Next
End Sub
Viel Erfolg
Grüße Uwe
Member: halbschuh107
halbschuh107 Jul 29, 2014 at 16:27:52 (UTC)
Goto Top
Hallo Uwe,

super - vielen Dank für deine Hilfe! Du bist ja super Klasse und hast mir mehr als geholfen. Es funktioniert Klasse!!! Habe das ganze auch noch ein bisschen erweitern
können. Mit "Set ws2 = Workbooks("Ausleitungstabelle.xls").Sheets("Daten") 'Ausleitungstabelle" kann ich jetzt sogar eine externe Datei einlesen, sodass die AUsleitung nicht zwingend in der gleichen Datei sein muss face-smile

Ich hoffe, ich kann noch so einiges von hier lernen!!

Vielen Dank und hab noch einen schönen Tag.

Gruß Lars