Avatar billede norberg Juniormester
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
Avatar billede lerskov Praktikant
18. september 2008 - 14:16 #1
pivottabel burde kunne klare denne opgave.
Avatar billede norberg Juniormester
18. september 2008 - 14:20 #2
Ja hvis man kender navnene, dette gør jeg ikke og der er stadigvæk samregninger eller??
Avatar billede friis5 Novice
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
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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