Avatar billede supermand5230 Nybegynder
27. maj 2007 - 22:41 Der er 6 kommentarer

oprettelse af graf via aldersgruppe

Du skal lave en funktionalitet som, med udgangspunkt i medlemskartoteket, kan lave en
graf, der illustrerer fordelingen af alle registrerede medlemmers alder. Der skal inddeles
i intervallerne 0-18, 19-28, 29-39, 40-59 og 60-, og du må selv vælge hvilken graftype,
du synes passer bedst til formålet. Da medlemskartoteket vokser hver eneste dag, er det
nødvendigt, at din kode er fleksibelt opbygget, således at der automatisk tages højde for
dette.

nogen som kan hjæple mig hvordan det skal gribes an?
Avatar billede thomaxz Nybegynder
27. maj 2007 - 23:06 #1
Der er flere måder at løse det på , men hvis du brugere progreggsbar som i vb 6.0 som jeg går ud fra er det du bruge ligger i en udvidelse "Microsoft Windows Commons Controls 6.0 (SP4)"

så finder du ud hvor mange procent er at den gruppe f.eks.

du har 100 medlemmer og der 20 af dem er mellem 0-18 det er 20 procent

20/100*100=20

og sætter progressbaren til 20%.

hvis du f.esk stede havde 250 medllemer og stadig kun 20 af dem var mellem 0-18 var det 8 procent

20/250*100=8 procen

og sætter du progrsbaren til 8 procent.
Avatar billede supermand5230 Nybegynder
27. maj 2007 - 23:18 #2
blev ik klogere af din kommentar...jeg bruger versionen excel 2003.
jeg har over 4000 medlemmer i kartotektet..så jeg gå udfra jeg skal lave en kode først som kan tælle hvor mange medlemmer der er indenfor de grupper: 0-18, 19-28, 29-39, 40-59 og 60-, og så derefter graften af disse..
kan du skrive et eks. på koden
Avatar billede thomaxz Nybegynder
27. maj 2007 - 23:32 #3
okay så du bruge vba, visual basic for application, er ikke klar over at den componet findes.

ja du skal først lave en kode som finder totalten altså det præcise antal medlemmer,

derefter laver du en kode der finder ud af hvor mange procent der indefor en en gruppe.

og hvis koponent findes, sætter du den dens value værdi til den procent du har fundet.


hvis ikke, blir det lidt svære for så må du selv til lave noget.

hvordan gemmer du dine data, i databse eller i rækekr eller hvad?
Avatar billede supermand5230 Nybegynder
27. maj 2007 - 23:43 #4
ja bruger vba, visial basic for application..

alle mine dataer ligger i en excel fil..det er disse data/tal jeg skal lave funktionalitet af.. resultaterne skal altså vises på excel... er meget lost medhensyn til hvad jeg skal skrive i koder for at lave dette..
Avatar billede thomaxz Nybegynder
28. maj 2007 - 00:01 #5
Nu er vba ikke min stærke side,

f.eks hvis din dat ser sådan her ud

--|a  |b    |
01|navn|alder|
02|Hans|22  |
03|Hans|22  |
04|Hans|22  |
05|Hans|18  |
06|Hans|35  |
07|Kim |45  |
08|Kim |45  |
09|Kim |56  |
10|Kim |56  |
11|    |    |

*********************

11 reprænsenter en tom line

så skal ud vist nok gør noget i stil med

dim str as string
dim r as integer

dim total as long

dim gruppe as long

r=2

'finde alle


do

  str=Range("B" & str$(r))

  total=total+1

  r=r+1
while(str not ="")



'finde gruppe, f.esk mellem 0 og 18

dim alder as integer

a=2

do

  str=Range("B" & str$(r))
 
  alder=val(str)

  if alder >=0 AND alder <=18 then
      gruppe=gruppe+1
  end if

while(str not ="")

'inden du sår finder den næste gruppe regne du procent ud

dim ProcentGrupppe018 as integer


ProcentGrupppe018=gruppe/total*100


**************

er ikke sikekr på kommandoen heder range

hvis du for upræcise resultater så ændre variablerne fra integer til double.
Avatar billede kabbak Professor
28. maj 2007 - 23:50 #6
Her er en function der gør det:
Marker 5*2 celler, altså 5 celler i 2 kolonner ved siden af hinanden, der hvor resultatet skal komme.

skriv =Aldersfordeling(B2:B10), tryk CTRL+SHIFT+ENTER, og data vil stå således

0-18    11,11111111
19-28    33,33333333
29-39    11,11111111
40-59    44,44444444
60->    0

ret selv området B2:B10 til dit område

Public Function Aldersfordeling(Aldre As Range)
    Dim C As Range, I As Long, Total As Integer
    Dim res(4, 1) As Variant
    res(0, 0) = "0-18"
    res(1, 0) = "19-28"
    res(2, 0) = "29-39"
    res(3, 0) = "40-59"
    res(4, 0) = "60->"
    '0-18, 19-28, 29-39, 40-59 og 60-
    For Each C In Aldre
        Select Case C
        Case Is < 19: res(0, 1) = res(0, 1) + 1: Total = Total + 1
        Case Is < 29: res(1, 1) = res(1, 1) + 1: Total = Total + 1
        Case Is < 40: res(2, 1) = res(2, 1) + 1: Total = Total + 1
        Case Is < 60: res(3, 1) = res(3, 1) + 1: Total = Total + 1
        Case Is > 59: res(4, 1) = res(4, 1) + 1: Total = Total + 1
        End Select
    Next
    For I = 0 To 4
        res(I, 1) = res(I, 1) / Total * 100
    Next
    Aldersfordeling = res
End Function
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester