Ik wil het percentiel van een bereik goed bepalen, dus niet met de functie percentiel.
Hiervoor moet ik een dataset sorteren (in VBA, ik wil de oorspronkelijke volgorde aanhouden in Excel).
Dit lukt echter niet.
Ik heb de volgende voorbeelcode.
Nu wil ik het eerste stukje code aanpassen in
Dan krijg ik echter de foutmelding. Compileerfout: toewijzen aan een matrix is niet mogelijk.
En als ik de code aanpas in
dan krijg ik een andere foutmelding. Typen komen niet overeen. Er wordt een matrix of door de gebruiker gedefinieerd type verwacht.
Hiervoor moet ik een dataset sorteren (in VBA, ik wil de oorspronkelijke volgorde aanhouden in Excel).
Dit lukt echter niet.
Ik heb de volgende voorbeelcode.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| Sub Main()
Dim myArray(4) As Variant
myArray(0) = 9
myArray(1) = 11
myArray(2) = 7
myArray(3) = 4
Call QSort(myArray, 0, 3)
Range("A1:A4") = Application.WorksheetFunction.Transpose(myArray)
End Sub
Sub QSort(sortArray() As Variant, ByVal leftIndex As Integer, ByVal rightIndex As Integer)
Dim compValue As Double
Dim I As Integer
Dim J As Integer
Dim tempNum As Double
I = leftIndex
J = rightIndex
compValue = sortArray(Int((I + J) / 2))
Do
Do While (sortArray(I) < compValue And I < rightIndex)
I = I + 1
Loop
Do While (compValue < sortArray(J) And J > leftIndex)
J = J - 1
Loop
If I <= J Then
tempNum = sortArray(I)
sortArray(I) = sortArray(J)
sortArray(J) = tempNum
I = I + 1
J = J - 1
End If
Loop While I <= J
If leftIndex < J Then QSort sortArray(), leftIndex, J
If I < rightIndex Then QSort sortArray(), I, rightIndex
End Sub |
Nu wil ik het eerste stukje code aanpassen in
code:
1
2
3
4
5
| Sub Main()
Dim myArray(4) As Variant
myArray = Range("C1:C4").Value
... |
Dan krijg ik echter de foutmelding. Compileerfout: toewijzen aan een matrix is niet mogelijk.
En als ik de code aanpas in
code:
1
2
3
4
5
| Sub Main()
Dim myArray As Variant
myArray = Range("C1:C4").Value
... |
dan krijg ik een andere foutmelding. Typen komen niet overeen. Er wordt een matrix of door de gebruiker gedefinieerd type verwacht.
Before me there was many, after me there will be none. I'm the one!