Clever-Excel-Forum

Normale Version: Suchen und kopieren basierend auf einem Zellwert in Spalte (VBA)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Leute,

ich wende mich mit einer für mich sehr kniffligen Geschichte und hoffe das mir jemand hier helfen kann! 

Ich habe eine Datei mit 2 Reitern. "Eingabemaske" und "Daten"

Im Reiter "Eingabemaske" gibt es ein Feld (K3) wo eine ID eingetragen wird. In den Zellen K5, K7, K9, K11, K13 werden Noten von 1-5 eingetragen.

Im Reiter "Daten" stehen in der Spalte A die IDs. Die Noten zur jeweiligen ID stehen in Spalten S - W. Da kommt es halt drauf an, in welcher Zeile die jeweilige ID ist. 

Und hier liegt mein Problem. Ich bekomme zwar hin Werte mit VBA rüber zu kopieren, aber nicht, dass die Daten in die Zeile der jeweiligen ID überspielt werden.

Falls dies zu Konfus war, bitte Bescheid geben :D. Jedenfalls bin ich für eine Antwort und erst für Hilfe sehr dankbar!

lg und DANKE Wolfgang

P.s. und zur Info Hier der Code den ich für ein normales kopieren ohne Abgleich genommen hätte.
Sub EingabeMitarbeiter()
Dim BW1 As String, BW2 As String, BW3 As String, BW4 As String, BW5 As String
BW1 = Range("K5")
BW2 = Range("K7")
BW3 = Range("K9")
BW4 = Range("K11")
BW5 = Range("K13")
Worksheets("Daten").Select
Worksheets("Daten").Range("S1").Select
If Worksheets("Daten").Range("S1").Offset(1, 0) <> "" Then
Worksheets("Daten").Range("S1").End(xlDown).Select
End If
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = BW1
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = BW2
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = BW3
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = BW4
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = BW5
End Sub
Hallo Wolfgang,

teste mall das (neue ID´s werden unten angefügt):

Code:
Sub EingabeMitarbeiter()
  Dim strBW1 As String, strBW2 As String, strBW3 As String, strBW4 As String, strBW5 As String
  Dim varID As Variant
  Dim varZeile As Variant
  With Worksheets("Eingabemaske")
    varID = .Range("K3").Value
    If varID = "" Then Exit Sub
    strBW1 = .Range("K5").Value
    strBW2 = .Range("K7").Value
    strBW3 = .Range("K9").Value
    strBW4 = .Range("K11").Value
    strBW5 = .Range("K13").Value
  End With
  With Worksheets("Daten")
    varZeile = Application.Match(varID, .Columns(1), 0)
    If Not IsNumeric(varZeile) Then
      varZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
      .Cells(varZeile, 1).Value = varID
    End If
    .Cells(varZeile, 19).Value = strBW1
    .Cells(varZeile, 20).Value = strBW2
    .Cells(varZeile, 21).Value = strBW3
    .Cells(varZeile, 22).Value = strBW4
    .Cells(varZeile, 23).Value = strBW5
  End With
End Sub

Gruß Uwe
Guten Morgen Uwe,

das ist genau dass was ich gesucht habe! Vielen Dank für deine rasche Hilfe!

lg
Wolfgang