18. september 2008 - 14:05
Der er
1 kommentar og
2 løsninger
Optæling af unike personer og samregning af tal, (excel 2003)
Hej hajer
Jeg har et problem med optælning af personer i et meget stort regne ark, jeg har over 25.000 rækker nedaf, det jeg skal, det er at tælle de forkellige personer der er, nogle personer står der 20 gange, nogle står der kun 3-4 gange, men jeg skal tælle hvor mange forskellige personer vi har i arket, (antalet af bruger).
Det mere vanskelige er, at jeg så skal bruge, en bestemt værdi i de næste kolonner, fra hver bruger samt en total, se eksemple nedeunder
1 2 3
Henrik SMS Pris
Henrik Fastnet Pris
Peter SMS Pris
Peter ADSL Pris
Peter ISDN Pris
Gitte Fastnet Pris
Hvor mange har SMS, ADSL, Fastnet osv.
Hvad er pris totalerne for alle SMS, alle ADSL, alle Fastnet osv.
På forhånd tak for hjælpen
30. september 2008 - 14:50
#3
Hvis du blot paster dette ind i et modul, og ellers dit ark er opbygget således;
<A> <B> <C>
<1> Navn Type Pris
<2> Henrik SMS 891
<3> Henrik Fastnet 607
<4> Peter SMS 666
<5> Peter ADSL 833
<6> Peter ISDN 21
<7> Gitte Fastnet 896
så burde det hele spille :)
Option Explicit
Option Base 1
Sub Main()
Dim i As Long, j As Long, total As Long, antal As Long
Dim TypeForbindelse() As String
Dim UnikkeForbindelser() As String
ReDim TypeForbindelse(Range("A65536").End(xlUp).Row - 1)
For i = 2 To Range("B65536").End(xlUp).Row
TypeForbindelse(i - 1) = ActiveSheet.Cells(i, 2)
Next i
Call UniqueArray(TypeForbindelse, UnikkeForbindelser)
For i = 1 To UBound(UnikkeForbindelser)
total = 0
antal = 0
For j = 2 To Range("B65536").End(xlUp).Row
If UnikkeForbindelser(i) = ActiveSheet.Cells(j, 2) Then
total = total + ActiveSheet.Cells(j, 3)
antal = antal + 1
End If
Next j
MsgBox "Antallet af " & UnikkeForbindelser(i) & "-kunder var " & antal & Chr(13) & Chr(13) & UnikkeForbindelser(i) & " total blev: " & total & " DKK"
Next i
End Sub
Sub UniqueArray(Array1() As String, UniqArray() As String)
Dim i As Integer
Dim Unique As New Collection
For i = 1 To UBound(Array1)
On Error Resume Next
Unique.Add Array1(i), CStr(Array1(i))
Next i
ReDim UniqArray(Unique.Count)
For i = 1 To Unique.Count
UniqArray(i) = Unique(i)
Next i
End Sub