2 Arrays gegen einander durchsuchen
Maximilian
ich habe mir ein Userform gebastelt mit dessen hilfe ich ein tabellenblatte mit daten fülle.
Spalte A =Datum Spalte B = Kostenstelle Spalte C = Aufgabe Spalte D =verbrauchte zeit und E = Kommentar.
In dem Formular möchte ich nun ein anfang und endatum eingeben und über ein button sollen mir in tabellenblatt 3 die daten zusammengefasst werden. also wieviel zeit auf welche Kostenstelle gebucht werden muss
Meine Idee war es 2 Arrays zu erzeugen. Ein Datenarray das die ganze tabelle erfasst und eines mit den kostenstellen (ohne doppelte) Dann wollte ich das kostenstellen array als suchwerte benutzen und gegen das datenarray laufen lassen.
Soweit die Theorie :)
Folgende Probleme habe ich:
1. Die bestimmung des unteren und oberen grenzwertes aus dem Datum funktioniert nicht richtig, weil die daten mehrfach vorkommen
2. Mir fehlt ein konzept um die Arrays gegeneinander zu durchsuchen. außerdem habe ich schon diverse sachen probiert um die daten aus einem array herauszuschreiben und bekomme es nicht in tabellenblatt 3
3. Vllt ist die Idee mit 2 Arrays auch nicht praktikabel und man sollte das eher mit einer anderen methode machen?
Danke für eure Hilfe
Hier mein code für die Auswertung
Private Sub btn_auswertung_Click()
Dim i As Integer, j As Long
Dim spnr As Long, ogr As Long, ugr As Long
Dim znr As Integer, znrz As Integer, znrt As Integer, z As Integer
Dim pruefwert As String
Dim getrennt() As String
Dim doppelt As Boolean
Dim startdatum As String, Enddatum As String
Dim x As Integer
Dim Daten()
Dim Kostenstelle()
startdatum = txt_anfangsdatum
Enddatum = txt_enddatum
Datenarray = Sheets(1).Cells(1, 1).CurrentRegion
i = 0
x = 0
znr = 1
znrz = 1
z = 1
'untere Grenze Array ermitteln
Do
znr = znr + 1
ugr = znr
Loop While Worksheets("Tabelle1").Cells(znr, 1).Value startdatum
' obere Grenze Array ermitteln
Do
znrz = znrz + 1
ogr = znrz
Loop While Worksheets("Tabelle1").Cells(znrz, 1).Value Enddatum
znrt = 0
'Kostenstellen in zeitraum bestimmen
Do While znrt + ugr ogr + 1
ReDim Preserve Kostenstelle(i)
Kostenstelle(i) = Worksheets("Tabelle3").Range("B" & i + 1)
pruefwert = Range("B" & znrt + ugr)
doppelt = False
For j = 0 To UBound(Kostenstelle)
If Kostenstelle(j) = pruefwert Then
doppelt = True
Exit For
End If
Next
If doppelt = False Then
Kostenstelle(UBound(Kostenstelle)) = pruefwert
i = i + 1
End If
j = j + 1
znrt = znrt + 1
Loop
Dim i1 As Long
Dim i2 As Long
For i2 = LBound(Kostenstelle) To UBound(Kostenstelle)
For i1 = LBound(Datenarray) To UBound(Datenarray)
If (Kostenstelle(i2) = Datenarray(i1, 2)) Then
Datenarray(i1, 2) = Worksheets("Tabelle3").Cells(2, i1 + 1)
End If
Next i1
Next i2
End Sub