Das geht. Bei vielen Datein wird es leider umständlich aber ich will mich auf gar keine Fall beschweren, mir wurde hier schon sehr doll geholfen!
Ich habe aber noch eine Frage: Wenn ich jetzt Zahlenwerte in Spalte D oder E habe, die Bedingung weiterhin in B, kann ich ja nicht einfach das C durch ein D ersetzen, da ich so ja die Spalte C noch mit inbegriffen habe oder? Wenn ich aber (B;D) oder sowas wie (B2:B800+D2:D8000) rechne bekomme ich Fehler bzw. es werden dann keine Minimalwerte übertragen. Habt ihr eine Idee wie ich das umschreiben müsste.
If Left(suche, 13) = "ERGEBNISLISTE" Then 'könnte man noch ausbauen
Workbooks.Open pfad & "\" & suche
name2 = ActiveWorkbook.name
For i = 1 To 4
anzahl = Application.WorksheetFunction.CountIf(Workbooks(name2).Worksheets(1).Columns(2), bedingungen(i))
summe = Application.WorksheetFunction.SumIf(Worksheets(1).Columns(2), bedingungen(i), Worksheets(1).Columns(3))
mitwe = summe / anzahl
'Spalte B Bedingungen, Spalte C Werte
formel1 = "=MAX((B2:B8000=" & Chr(34) & bedingungen(i) & Chr(34) & ")*(D2:D8000))"
formel2 = "=SVERWEIS(" & Chr(34) & bedingungen(i) & Chr(34) & ";B2:D8000;2;FALSCH)"
Workbooks(name2).Worksheets(1).Cells(1, 4).FormulaArray = formel1
max = Worksheets(1).Cells(1, 4).Value
Workbooks(name2).Worksheets(1).Columns("B;D").Sort Key1:=Workbooks(name2).Worksheets(1).Range("B1"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
Workbooks(name2).Worksheets(1).Cells(1, 5).FormulaLocal = formel2
min = Worksheets(1).Cells(1, 5).Value
Workbooks(name).Worksheets(2).Cells(zeile, 4 + (i - 1) * 3) = mitwe
Workbooks(name).Worksheets(2).Cells(zeile, 3 + (i - 1) * 3) = min
Workbooks(name).Worksheets(2).Cells(zeile, 2 + (i - 1) * 3) = max
Next i
Dank und Gruß
Sdeluxe
|