Avatar billede banazmi Nybegynder
03. maj 2004 - 12:00 Der er 7 kommentarer og
2 løsninger

Optælling af celler

Hej
jeg har en kolon med 5000 værdier, nogle af værdierne er ens. jeg skal tælle antal celler med forskellige værdier, dvs. hvis to celler har ens værdier skal de tælles som kun en.
Er der en der kan hjælpe mig med det.
Avatar billede jkrons Professor
03. maj 2004 - 12:25 #1
En løsning kunne være at bruge avanceret filter til at kopiere de unikke værdier til at andet sted i regnearket og tælle dem der med TÆL() funktionen.
Avatar billede bak Forsker
03. maj 2004 - 12:49 #2
=SUM(1/COUNTIF(A1:A5000;A1:A5000))
indtastes som array-formler dvs afsluttes med ctrl-shift-enter istedet for bare enter.
Vær opmærksom på at hvis der er blanke celler i området virker den ikke.
Avatar billede tobler Nybegynder
03. maj 2004 - 12:52 #3
Prøv med: =SUM(1/COUNTIF(A1:A5000;A1:A5000)) indtastet med Ctrl+Shift+Enter

eller hvis der er blanke i listen med denne:

=SUM(IF(FREQUENCY(IF(LEN(A1:A5000)>0;MATCH(A1:A5000;A1:A5000;0);"");IF(LEN(A1:A5000)>0;MATCH(A1:A5000;A1:A5000;0);""))>0;1)) skal også indtastes med Ctrl+Shift+Enter
Avatar billede tobler Nybegynder
03. maj 2004 - 12:55 #4
sorry bak, alt dette tasteri og copy/paste ta'r tid. Men prøv variant to, hvis der er blanke i listen.
Avatar billede bak Forsker
03. maj 2004 - 13:01 #5
Et alternativ til toblers nr 2
=SUM(IF(COUNTIF(A1:A5000;A1:A5000)=0;"";1/COUNTIF(A1:A5000;A1:A5000)))
skal også indtastes med Ctrl+Shift+Enter

Bemærk at så store array-formler tager tid at køre igennem :-)
Avatar billede bak Forsker
03. maj 2004 - 13:29 #6
Hvis du ønsker noget der går hurtigere er her en brugerdefinet funktion, der også kan benyttes til at tælle. Du kan enten bruge den til at tælle alle unikke i et område der er mellem to tal eller bare udelade min og max, så tæller den alle unikke i området.

Function CountUniqBetween(RNG As Range, Optional mini As Variant, Optional maxi As Variant) As Long

Dim xcol As New Collection
Dim varray As Variant
Dim i As Long
Dim j As Long
Dim temp
If IsMissing(mini) Then mini = -3.402823E+38
If IsMissing(maxi) Then maxi = 3.402823E+38
If RNG.Rows.Count = 65536 Then _
    varray = RNG.Resize(ActiveSheet.UsedRange.Rows.Count, RNG.Columns.Count) _
    Else varray = RNG
On Error Resume Next
For i = 1 To UBound(varray, 2)
    For j = 1 To UBound(varray, 1)
    temp = varray(j, i)
    If (temp >= mini And temp <= maxi And Len(temp) > 0) Then _
        xcol.Add varray(j, i), CStr(varray(j, i))
    Next
Next
On Error GoTo 0
CountUniqBetween = xcol.Count
Set xcol = Nothing
Set varray = Nothing

End Function
Avatar billede janvogt Praktikant
03. maj 2004 - 16:17 #7
En array-formel er vist ikke nødvendig.
Denne burde også kunne gøre det:
=SUM(IF(FREQUENCY(A1:A5000;A1:A5000)>0;1))
Avatar billede bak Forsker
03. maj 2004 - 16:28 #8
yess, Jan.  Vidste at jeg havde set den før, kunne bare ikke lige finde den.
Avatar billede tobler Nybegynder
14. februar 2005 - 22:57 #9
Lukketid?
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