da mir hier schon einmal hervorragend geholfen wurde, bitte ich erneut um "Denkanstoß".
Ich weiß, dass ich vermutlich nur den ein oder anderen Denkfehler begehe.
Ausgangssituation:
- 2 Excel Arbeitsblätter
Das erste mit 3 gefüllten Spalten (A,B,C)
Wichtige Bereiche: Zeilen 2 - 54, in diesen Zellen stehen in Spalte B Dienstarten und ab Zeile 55 bis Ende, dort stehen Kostenstellen, ebenfalls in Spalte B
In Spalte A stehen 'OrgaID's'
In Spalte C 'übergeordnete Orga ID's'
Das zweite ist gefüllt mit Daten, die für eine Userform benötigt werden
- 1 Userform
Hier werden 2 Werte eingegeben: Dienstart über eine Combobox (Daten stehen in m Arbeitsblatt 'Daten')
Kostenstelle: wird in eine Textbox eingegeben (7 stellig)
Beim Klick auf einen Commandbutton soll folgendes geschehen:
Variablen:
K = Kostenstelle
D = Dienstart
L = Orga ID (Spalte A)
M = übergeordnete Orga ID (Spalte C)
- Durchsuche Spalte B nach dem Inhalt der Textbox (Kostenstelle)
- Wenn Kostenstelle gefunden, dann nimm den Wert, der in derselben Zeile in Spalte A steht und fülle damit L
- Suche nun in Spalte B ab Zeile 2 nach der Variablen D und überprüfe ob die Variable L in der gefundenen Zeile mit dem Wert der Spalte A in derselben Zeile übereinstimmt. Wenn ja, dann fülle Variable M mit dem Wert aus Spalte C derselben Zeile und gib es in der Userform in einem Textfeld aus und beende alles. Wenn nicht, dann nimm die nächste Zeile (ab 55) mit der Variablen K und such dann wieder ab Zeile 2.
Ich hoffe das ist so einigermassen verständlich.
Kostenstellen ab Zeile 55 kommen mehrfach vor, aber jede hat einen anderen Wert in Spalte A
Mein bisheriger, kläglicher Versuch:
Dim D As String ' D = Dienstart aus Dropdown
Dim K As String ' K = Kostenstelle
Dim L As String ' L = Organisationsstruktur-Identifizierung, Wert in Spalte A
Dim M As String ' M = Übergeordnete Organisationsstruktur-Identifizierung, Wert in Spalte C
Dim O As Integer ' O = Orga ID, die herausgesucht wird und am Ende als Ergebnis angezeigt
Dim iZaehler, jZaehler As Long
'Variablen werden gefüllt
D = ComboBox1.Value 'Dienstart
K = TextBox2.Value 'Kostenstelle
For iZaehler = 55 To Cells(Rows.Count, 2).End(xlUp).Row 'Spalte B beginnt mit Zeile 55 und hier wird bei der ersten letzen Zelle das Ende "markiert"
If Cells(iZaehler, 2).Value = K Then 'Spalte B nach Kostenstelle durchsuchen
L = Cells(iZaehler, 1) 'hier ist die erste Übergeordnete Organisationssruktur-Ebene ID gespeichert - Wert aus Spalte C in Variable L speichern
For jZaehler = 2 To 54
N = Cells(jZaehler, 2).Value
If Cells(jZaehler, 2).Value = D And Cells(jZaehler, 1).Value = L Then
M = Cells(jZaehler, 3).Value
TextBox3.Value = M
Exit For
End If
Next
Exit For
End If
Next