funkcije Za Median i Quartile
Code:
Function Median(tName As String, fldName As String) As Single
Dim MedianDB As DAO.Database
Dim ssMedian As DAO.Recordset
Dim RCount As Integer, i As Integer, x As Double, y As Double
Dim OffSet As Integer
Set MedianDB = CurrentDb
Set ssMedian = MedianDB.OpenRecordset( _
"SELECT [" & fldName & _
"] FROM [" & tName & _
"] WHERE [" & fldName & "] IS NOT NULL " & _
"ORDER BY [" & fldName & "];")
'NOTE: To include nulls when calculating the median value, omit
'WHERE [" & fldName & "] IS NOT NULL from the example.
ssMedian.MoveLast
RCount% = ssMedian.RecordCount
x = RCount Mod 2
If x <> 0 Then
OffSet = ((RCount + 1) / 2) - 2
For i% = 0 To OffSet
ssMedian.MovePrevious
Next i
Median = ssMedian(fldName)
Else
OffSet = (RCount / 2) - 2
For i = 0 To OffSet
ssMedian.MovePrevious
Next i
x = ssMedian(fldName)
ssMedian.MovePrevious
y = ssMedian(fldName)
Median = (x + y) / 2
End If
ssMedian.Close
MedianDB.Close
End Function
Code:
Function fnQuartile(tName As String, fldName As String, _
Optional QWert As Byte = 2) As Double
Dim lCount As Long
Dim P1 As Long
Dim Q1 As Double
Dim P2 As Long
Dim Q2 As Double
Dim P3 As Long
Dim Q3 As Double
Dim QAusgabe As Double
With CurrentDb.OpenRecordset("SELECT [" & fldName & _
"] FROM [" & tName & _
"] WHERE [" & fldName & "] IS NOT NULL " & _
"ORDER BY [" & fldName & "];")
If Not .EOF Then
.MoveLast
lCount = .RecordCount
.MoveFirst
P1 = Int((1 / 4 * (lCount - 1)) + 1)
Q1 = (1 / 4 * (lCount - 1)) - Int(1 / 4 * (lCount - 1))
P2 = Int((2 / 4 * (lCount - 1)) + 1)
Q2 = (2 / 4 * (lCount - 1)) - Int(2 / 4 * (lCount - 1))
P3 = Int((3 / 4 * (lCount - 1)) + 1)
Q3 = (3 / 4 * (lCount - 1)) - Int(3 / 4 * (lCount - 1))
Select Case QWert
Case 1
.Move P1 - 1
QAusgabe = .Fields(fldName)
If Q1 <> 0 Then
.MoveNext
QAusgabe = QAusgabe + (.Fields(fldName) - QAusgabe) * Q1
End If
Case 2
.MoveFirst
.Move P2 - 1
QAusgabe = .Fields(fldName)
If Q2 <> 0 Then
.MoveNext
QAusgabe = QAusgabe + (.Fields(fldName) - QAusgabe) * Q2
End If
Case 3
.MoveFirst
.Move P3 - 1
QAusgabe = .Fields(fldName)
If Q3 <> 0 Then
.MoveNext
QAusgabe = QAusgabe + (.Fields(fldName) - QAusgabe) * Q3
End If
End Select
End If
End With
fnQuartile = QAusgabe
End Function
Evo i linka
http://www.office-loesung.de/ftopic96471_0_0_asc.php
[Ovu poruku je menjao Kiro dana 21.01.2008. u 18:21 GMT+1]