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??
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
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.
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
14. februar 2008 - 19:18
#5
Og hvorfor er Sælger, omsæt, antal ikke Dim'et til noget? eks. integer?