ich nach einer Möglichkeit, ein Array mit einem ausgewerteten Ausdruck zu filtern, wie:Wie filtert man ein Array mit einer Arbeitsblattfunktion?
Dim arr1(), arr2(), arr3()
arr1 = Array(1, 2, 3, 4, 5) ' > [1, 2, 3, 4, 5]
arr2 = Map(arr1, "Values() * 2") ' > [2, 4, 6, 8, 10]
arr3 = Filter(arr2, "Values() > 6") ' > [8, 10]
Ich habe bereits implementiert, um die Map
Funktion mit einem UDF und mit Application.Evaluate("INDEX(expression,)")
, aber ich bin zu kämpfen, es zu machen Arbeit für Filter
:
Private arr_()
Public Function Values() As Variant()
Values = arr_
End Function
Public Function Map(arr(), expression As String) As Variant()
arr_ = arr
Map = Application.Evaluate("INDEX(" & expression & ",)")
End Function
Public Function Filter(arr(), expression As String) As Variant()
arr_ = arr
Filter = Application.Evaluate("INDEX(Values(), " & expression & ")")
End Function
gibt es eine Möglichkeit andere als Looping/jeden Wert Verschiebung? Maby mit VLOOKUP
?
Ich denke, Sie müssen Benutze eine Schleife. –
Welche Excel verwenden Sie? Es gibt eine Möglichkeit, wenn Sie Office 365 Excel mit TEXTJOIN verwenden. Sonst ist es eine Iteration. INDEX wird ein Array mit der gleichen Größe wie die Eingabe zurückgeben, sie werden mit "FALSE" und den Zahlen, die auf TRUE auflösen, gefüllt. –