
25-03-14, 15:08
|
| Όνομα: Γιώργος Έκδοση λογισμικού Office: Ms-Office 2010 Γλώσσα λογισμικού Office: Ελληνική, Αγγλική | | Εγγραφή: 18-06-2010
Μηνύματα: 3.674
| |
Καλησπέρα στην παρέα
Η παρακάτω συνάρτηση, με βάση το φύλο των αθλητών, το έτος γέννησης και το βάρος τους, κατατάσσει τους αθλητές σε κατηγορίες σύμφωνα με το ζητούμενο. Κώδικας: Public Function CategoriesWeight(Sex As Variant, Etos As Variant, Baros As Variant) As String
'Sex = "A" (ελληνικό)για αγόρι και "Κ" για κορίτσι
'Etos = το έτος γέννησης
'Baros = το βάρος του αθλητή
Dim i As Long, j As Long, c As Long
Dim x(1 To 7) As Variant
Sex = Nz(Sex, ""): Etos = Nz(Etos, 0): Baros = Nz(Baros, 0)
x(1) = Array(33, 37, 41, 45, 49, 53, 57, 61, 65)
x(2) = Array(29, 33, 37, 41, 44, 47, 51, 55, 59)
x(3) = Array(45, 48, 51, 55, 59, 63, 68, 73, 78)
x(4) = Array(42, 44, 46, 49, 52, 55, 59, 63, 68)
'----------------------------------------------
x(5) = Array(27, 30, 33, 37, 41, 45, 49, 53, 57)
x(6) = Array(21, 24, 27, 30, 33, 37, 41, 45, 49)
x(7) = Array(17, 20, 23, 26, 29, 33, 37, 41, 44)
'Η διάκριση θα έπρεπε να γίνει με βάση την ηλικία του αθλητή.
'Έγινε όμως με βάση το έτος γέννησης, σύμφωνα με το ζητούμενο
Select Case Etos
Case 2002, 2001, 2000
If Sex = "Α" Then c = 1 Else c = 2
Case 1999, 1998, 1997
If Sex = "Α" Then c = 3 Else c = 4
Case 2003, 2004
c = 5
Case 2005, 2006
c = 6
Case 2007, 2008, 2009
c = 7
Case Else
Exit Function
End Select
For i = 0 To UBound(x(c))
If Baros < x(c)(0) Then
CategoriesWeight = "-" & x(c)(i)
Exit Function
ElseIf Baros >= x(c)(UBound(x(c))) Then
CategoriesWeight = "+" & x(c)(UBound(x(c)))
Else
If Baros >= x(c)(i) And Baros < x(c)(i + 1) Then
'Σύμφωνα με τα μαθηματικά το σύμβολο [ δείχνει ότι το κάτω όριο
'περιλαμβάνεται, ενώ το ) δείχνει ότι το πάνω όριο δεν περιλαμβάνεται
CategoriesWeight = "[" & CStr(x(c)(i)) & ", " & CStr(x(c)(i + 1)) & ")"
Exit Function
End If
End If
Next
End Function
Στη συνάρτηση:
1) Οι 12 περιπτώσεις, επειδή κάποιες ήταν όμοιες, περιορίστηκαν σε 7.
2) Στα διαστήματα των κατηγοριών η ελάχιστη τιμή περιλαμβάνεται, ενώ η μέγιστη όχι (ανήκει στην επόμενη κατηγορία).
Για παράδειγμα, αν 33<=Baros<37, ο αθλητής ανήκει στην κατηγορία: [33, 37).
Ενώ αν Baros=37 ανήκει στην κατηγορία: [37,41)
Στην επισυναπτόμενη ΒΔ, μπορούμε να δούμε ένα παράδειγμα χρήσης της συνάρτησης στο ερώτημα Categories
Φιλικά/Γιώργος
ΥΓ. Γιώργο, κάνε δοκιμές μήπως κάτι μου διέφυγε |