Tæl antal af hvert ciffer

Denne makro tæller hvor mange af hvert ciffer fra 0 til 9, der er mellem to givne tal, start (c1) og slut (c2). Start og sluttal skal indtastes i hver sin celle i regnearket, fx A1 og A2. Start skal altid være mindre end slut, ellers returneres #NUM!. Indtastes der en ikke-numerisk værdi i en af de to celler returneres #VÆRDI!. For at bruge funktionen skrives tallene fra 0 til 9 i 10 celler under hinanden, fxB1 til B10. Funktionen kan så indsættes i C1 som =NDIG($A$1;$A$2;B1). Bemærk de absolutte referencer. Nu kopieres formlen nedad til C10. Hvis startværdien er 0 og slutværdien er 9, skal der bruges netop et ciffer af hver slags. Er startværdien 20 og slutværdien 30, skal der bruges 11 totaller, 2 nuller og 2 tretaller og et af hver af de øvrige cifre. er startværdien 1 og slutværdien 10.000, skal der bruges 2.893 nuller, 4001 ettaller og 4000 af hver af de øvrige cifre. Tæl selv efter.

Her er koden.

Function NDIG(c1 As String, c2 As String, no As Byte) As Variant

    Dim cif(9) As Long
    If Not IsNumeric(c1) Or Not IsNumeric(c2) Then
        NDIG = CVErr(xlErrValue)
        Exit Function
    End If
    If Val(c1) > Val(c2) Then
        NDIG = CVErr(xlErrNum)
        Exit Function
    End If

    For X = c1 To c2 Step 1
        For I = 1 To Len(X)
            Select Case CByte(Mid(X, I, 1))
                Case Is = 0
                    cif(0) = cif(0) + 1
                Case Is = 1
                    cif(1) = cif(1) + 1
                Case Is = 2
                    cif(2) = cif(2) + 1
                Case Is = 3
                    cif(3) = cif(3) + 1
                Case Is = 4
                    cif(4) = cif(4) + 1
                Case Is = 5
                    cif(5) = cif(5) + 1
                Case Is = 6
                    cif(6) = cif(6) + 1
                Case Is = 7
                    cif(7) = cif(7) + 1
                Case Is = 8
                    cif(8) = cif(8) + 1
                Case Is = 9
                    cif(9) = cif(9) + 1
            End Select
        Next
    Next
    NDIG = cif(no)

End Function

- Tilbage til makroer -
- Tilbage til Excel -