Een UDF die een matrix retourneert:
Function lijstEvenOneven(bereik As Range, even As Boolean)
'even = 0 -> geeft lijst van even getallen
'even = 1 -> geeft lijst van oneven getallen
Dim lijst() As Single
Dim i As Integer, j As Integer, aantal As Integer, rest As Integer
If bereik.Rows.Count > 1 And bereik.Columns.Count > 1 Then
lijstEvenOneven = CVErr(xlErrRef)
Exit Function
End If
rest = IIf(even, 1, 0)
aantal = bereik.Cells.Count
ReDim lijst(1 To aantal)
j = 1
For i = 1 To aantal
If bereik(i) Mod 2 = rest Then
lijst(j) = bereik(i)
j = j + 1
End If
Next i
If bereik.Columns.Count > 1 Then
lijstEvenOneven = lijst
Else
lijstEvenOneven = Application.WorksheetFunction.Transpose(lijst)
End If
End Function
kopieer de functie naar een module:
https://users.pandora.be/ingrid/excel/copyvba.htm#moduleen voer deze in het werkblad als matrixformule in met
[Ctrl][Shift]+[Enter],bijv.
=lijstEvenOneven(A1:A20;1)
om de oneven getallen uit het bereik A1:A20 weer te geven
Gebruik een aangepaste getalopmaak om de nullen te onderdrukken bijv.
Standaard;Standaard;;