Avatar billede Loaduce Nybegynder
28. oktober 2013 - 14:24 Der er 3 kommentarer

Funktion/Makro til at tælle antallet af forskellige værdier/tekster

Hej Eksperter,

Jeg har et regneark hvor der bliver noteret hver gang jeg selv eller en studiekammerat har fortaget en prøve. Arket er nu vokset og det er efterhånde svært at holde styr på hvad der er tage og hvor mange prøver vi i alt er oppe på.

Derfor kunne jeg godt tænke mig lidt hjælp til en funktion/makro, som kan hjælpe med at optælle hvor mange forskellige udfyldte celler der er.

Her er et eksempel på hvordan arket er bygget op (i en mini udgave:

      A
1  820A-1
2  1423A-3
3  FVR.005
4  Ikke udført
5  820A-1
6  1024A-2
7  Ikke udført
8
9  1423A-3
10 FVR.005

Det funktionen/makroen så gerne skulle komme frem med er et antal, som i ovenstående tilfælde er = 5.  Da den ikke skal medregne tomme celler.

Jeg har forsøgt mig med denne, men den virker ikke :(

=SUM(HVIS(FREKVENS(HVIS(LÆNGDE(Y10:Y300)>0;SAMMENLIGN(Y10:Y300;Y10:Y300;0);"");HVIS(LÆNGDE(Y10:Y300)>0;SAMMENLIGN(Y10:Y300;Y10:Y300;0);""))>0;1))

Håber der er nogen der kan give lidt input eller har en løsning liggende.

På forhånd tak.
28. oktober 2013 - 15:29 #1
Prøv med denne matrixformel:

=SUM(HVIS(FREKVENS(HVIS(LÆNGDE(A1:A10)>0;SAMMENLIGN(A1:A10;A1:A10;0);"");HVIS(LÆNGDE(A1:A10)>0;SAMMENLIGN(A1:A10;A1:A10;0);""))>0;1))

Ctrl-Shift-Enter som afslutning på indtastningen.

(Måske er det problemet med din egen formel, at du ikke indtaster som matrixformel - har ikke tjekket den.)
28. oktober 2013 - 15:30 #2
... kann se at den ligner din egen en del - så meget tyder på at det er matrix-problemstillingen.

Så må du finde en metode til at løse indtastningen af "Ikke udført".
Avatar billede Sitestory Mester
03. november 2013 - 11:39 #3
Med en makro kan man gennemløbe et defineret område og føje celleværdierne til en collection. Man benytter sig så af, at navnene i en collection skal være unikke, og derfor skrives "On Error Resume Next", da forsøg på at tilføje en dublet ellers ville give en fejl. I nedenstående har jeg sat området til A1:D200, men det står dig selvfølgelig frit for.

'****************
Sub AntalUnikke()
Dim rCell As Range
Dim rRange As Range
Dim sTekst As String
Dim colTests As New Collection

Set rRange = Range("A1:D200") 'Området som skal gennemsøges

On Error Resume Next

For Each rCell In rRange
  sTekst = Trim$(rCell.Value) 'Fjerner blanke foran og bagefter
  If Len(sTekst) > 0 Then
      colTests.Add sTekst, sTekst
  End If
Next

MsgBox colTests.Count & " prøver"

Set colTests = Nothing
Set rCell = Nothing
Set rRange = Nothing
End Sub
'****************

Hvis du ændrer linjen:

If Len(sTekst) > 0 Then

til:

If Len(sTekst) > 0 And rCell.value <> "Ikke udført" Then

tælles kun de gennemførte prøver.
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

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