21.08.2017, 15:25
(Dieser Beitrag wurde zuletzt bearbeitet: 21.08.2017, 15:59 von Kuwer.
Bearbeitungsgrund: Code getagt
)
Code:
Sub Rueckwaertsvergleich(): Workbooks.Add xlWorksheet: n = 10000: m = 500
[A1:I1] = Split("Auftritt Adele Beyonce Celine MUC Datum wer"): [A2] = "1/1/1990"
Range("A3:A" & n).FormulaR1C1 = "=R[-1]C+RANDBETWEEN(1,2)"
Range("B2:D" & n).FormulaR1C1 = "=INDEX({""DC"";""NY"";""Seattle"";""HH"";""MUC""},RANDBETWEEN(1,5))"
Range("A2:D" & n) = Range("A2:D" & n).Value: [G1].FormulaR1C1 = "=COUNTA(C1)+1"
[H:H].NumberFormat = "m/d/yyyy": Range("H2:H" & m).FormulaR1C1 = "=INDEX(C[-7],RC[-1])"
Range("I2:I" & m).FormulaR1C1 = "=INDEX(R1C[-7]:R1C[-5],MATCH(R1C[-3],INDEX(C[-7]:C[-5],RC[-2],),))"
b = "R1C2:INDEX(C2,R[-1]C-1)": c = Replace(b, 2, 3): d = Replace(b, 2, 4)
a = Timer
Range("G2:G" & m).FormulaR1C1 = "=AGGREGATE(14,6,ROW(" & b & ")/((" & b & "=R1C[-1])+(" & c & "=R1C[-1])+(" & d & "=R1C[-1])),1)"
a = Timer - a: e = [G2].FormulaLocal: f = f & "Die Rückwärtsvergleich-Formel " & e & " benötigte für " & m & _
" Verwendungen über " & n & " Datensätze: " & Int(a * 10) / 10 & " Sekunden. " & Chr(10) & Chr(10)
a = Timer
Range("G2:G" & m).FormulaR1C1 = "=MAX(INDEX(ROW(" & b & ")*((" & b & "=R1C[-1])+(" & c & "=R1C[-1])+(" & b & "=R1C[-1])>0),))"
a = Timer - a: e = [G2].FormulaLocal: f = f & "Die Rückwärtsvergleich-Formel " & e & " benötigte für " & m & _
" Verwendungen über " & n & " Datensätze: " & Int(a * 10) / 10 & " Sekunden. " & Chr(10) & Chr(10)
a = Timer
Range("G2:G" & m).FormulaR1C1 = "=LOOKUP(2,1/ISNUMBER(SEARCH(R1C6," & b & "&" & c & "&" & d & ")),ROW(" & b & "))"
a = Timer - a: e = [G2].FormulaLocal: f = f & "Die Rückwärtsvergleich-Formel " & e & " benötigte für " & m & _
" Verwendungen über " & n & " Datensätze: " & Int(a * 10) / 10 & " Sekunden. " & Chr(10) & Chr(10)
MsgBox f
End Sub
ergibt ein überraschendes Ergebnis zugunsten von Jockels MAX und AGGREGAT gegenüber meinem mehr als doppelt so lange brauchenden VERWEIS.