Avatar billede kgndksv Juniormester
10. februar 2008 - 19:56 Der er 4 kommentarer og
1 løsning

oprette en tæller og summere i et array

jeg har et ark hvor der indtastes nogle sælger oplysninger med en ny række for hver sælger for hver dag. oplysningerne er "Sælger initialer", "omsætning" og "antal produkter".

Jeg skal oprette et array indeholdende én række for hver sælger og så skal alle omsætningstallene summes og antal produkter skal summes. Dvs. jeg skal have en tæller til at Redimme arrayet altså:

Array(k,3) ->(k,1)= sælgerinit. (k,2)=total omsæt. (k,3) = totalt antal solgte prod.


Eksempel:

    A    B    C   
1  SAK  15000  15
2  KET  10000  5
3  SAK  40000  16
4  ALA  10000  10
5  SAK  5000  1
6  KET  10000  1

Array skal altså i dette tilfælde se således ud
tælleren skal her altså være k = 3
 
  1      2    3
1 SAK  60000  32
2 KET  20000  6
3 ALA  10000  10

problemet er at oprette tælleren og summere de 2 andre oplysninger.

Er det dårligt formuleret??
Avatar billede supertekst Ekspert
11. februar 2008 - 00:27 #1
Nej - her er et forslag - koden anbringes i det pågældende Ark :

Dim antalRæk, optælTab(), antalSælgere
Sub Optælling()
Rem Housekeeping
    antalRæk = findAntalRækker
    ReDim optælTab(antalRæk, 3)
    nulstilTabel
   
    optælRækker
   
    visOptælling
End Sub
Private Function findAntalRækker()
    findAntalRækker = Cells(Rows.Count, 1) _
      .End(xlUp).Offset(1, 0).Row - 1
End Function
Private Sub nulstilTabel()
    For ix = 0 To antalRæk - 1
        optælTab(ix, 0) = ""                        'sælger-init
        optælTab(ix, 1) = 0                        'omsætning
        optælTab(ix, 2) = 0                        'antal prod.
    Next ix
End Sub
Private Sub optælRækker()
Dim sælger, oms, antal
    antalSælgere = 0
   
    For ræk = 1 To antalRæk
        sælger = Cells(ræk, 1)
        oms = Cells(ræk, 2)
        antal = Cells(ræk, 3)
       
        optælItabel sælger, oms, antal
    Next ræk
End Sub
Private Sub optælItabel(sælger, oms, antal)
    For ix = 0 To antalRæk - 1
        If optælTab(ix, 0) = sælger Then
            optælTab(ix, 1) = optælTab(ix, 1) + oms
            optælTab(ix, 2) = optælTab(ix, 2) + antal
            Exit Sub
        Else
            If optælTab(ix, 0) = "" Then
                optælTab(ix, 0) = sælger
                optælTab(ix, 1) = oms
                optælTab(ix, 2) = antal
                antalSælgere = antalSælgere + 1
                Exit Sub
            End If
        End If
    Next ix
End Sub
Private Sub visOptælling()
Dim rRæk
    rRæk = antalRæk + 2
   
    For sælger = 0 To antalSælgere - 1
        Cells(rRæk, 1) = optælTab(sælger, 0)
        Cells(rRæk, 2) = optælTab(sælger, 1)
        Cells(rRæk, 3) = optælTab(sælger, 2)
        rRæk = rRæk + 1
    Next sælger
End Sub
Avatar billede kgndksv Juniormester
14. februar 2008 - 18:31 #2
Hvad betyder Rem Housekeeping egentlig? den er markeret grøn i editoren...?
Avatar billede supertekst Ekspert
14. februar 2008 - 18:50 #3
Rem = Remark - altså kun en bemærkning
HouseKeeping er et "gl. edb-udtryk" for klargøring - altså noget, der udføres inden den egentlige hoved-process.
Avatar billede kgndksv Juniormester
14. februar 2008 - 19:15 #4
Ahh... sådan!

Hvad med denne linie hvad gør den? - optælItabel sælger, oms, antal

Private Sub optælRækker()
Dim sælger, oms, antal
    antalSælgere = 0
   
    For ræk = 1 To antalRæk
        sælger = Cells(ræk, 1)
        oms = Cells(ræk, 2)
        antal = Cells(ræk, 3)
       
        optælItabel sælger, oms, antal                      <-----
    Next ræk
End Sub
Avatar billede kgndksv Juniormester
14. februar 2008 - 19:18 #5
Og hvorfor er Sælger, omsæt, antal ikke Dim'et til noget? eks. integer?
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