Avatar billede mira96ac Novice
14. januar 2008 - 11:04 Der er 7 kommentarer og
1 løsning

Autoudfyld med nuller

Hejsa

Et lille nemt spørgsmål.

I en celle skal der altid stå 14 cifre. Dvs. en masse nuller efterfulgt af eet fakturanummer.

Da fakturanummeret kan ændre sig fra at være enten 1-cifret, 2-cifret osv. over tid skal antallet af nuller jo også ændre sig automatisk.

Hvordan laver man lige sådan en formel.
Avatar billede kabbak Professor
14. januar 2008 - 11:12 #1
Formater celler brugerdefineret 00000000000000
Avatar billede mira96ac Novice
14. januar 2008 - 11:19 #2
Jeg kan godt se at det virker, men

De første 14 cifre bruges til at beregne det 15ende. Det er til brug til et indbetalingskort.

Dvs. at nullerne skal skrives. Når jeg laver det sådan som du har skrevet vil den ikke beregne på baggrund heraf.. Skriver jeg nullerne manuelt vil den godt.
Avatar billede vejmand Juniormester
14. januar 2008 - 12:03 #3
Hmm, det må kunne klares i den formel som bruges til at beregne det 15ende.
Prøv at kopiere den formel herind.
Avatar billede mira96ac Novice
14. januar 2008 - 12:08 #4
Umiddelbart har jeg fundet denne makro som klarer beregningen af det sidste ciffer:

Public Function FindCheckCiffer(Number, Cardtype)
    Select Case Cardtype
        Case "01", "73": GoTo fejl
        Case "04", "15": FindCheckCiffer = MakeCheckCiffer(Number, 12, 15)
        Case "71": FindCheckCiffer = MakeCheckCiffer(Number, 14, 14)
        Case "75": FindCheckCiffer = MakeCheckCiffer(Number, 15, 15)
        Case "  ", """  """
            If Left(Number, 1) Like "[2,4,8]" And Len(Number) = 18 Then
                FindCheckCiffer = MakeCheckCiffer(Number, 18, 18)
            Else
                GoTo fejl
            End If
        Case Else: GoTo fejl
    End Select
    Exit Function
fejl:
    FindCheckCiffer = CVErr(xlErrNA)
End Function

Public Function IsCheckCifferOK(Number As String, Cardtype) As String
Dim vTemp                  As Variant
Dim vNumber                As Variant
    vNumber = Left(Number, Len(Number) - 1)
    Select Case Cardtype
        Case "01", "73": GoTo fejl
        Case "04", "15": vTemp = MakeCheckCiffer(vNumber, 12, 15)
        Case "71": vTemp = MakeCheckCiffer(vNumber, 14, 14)
        Case "75": vTemp = MakeCheckCiffer(vNumber, 15, 15)
        Case "  ", """  """
            If Left(vNumber, 1) Like "[2,4,8]" And Len(vNumber) = 18 Then
                vTemp = MakeCheckCiffer(vNumber, 18, 18)
            Else
                GoTo fejl
            End If
        Case Else: GoTo fejl
    End Select
    If vTemp = CInt(Right(Number, 1)) Then
        IsCheckCifferOK = "OK"
    Else
        IsCheckCifferOK = "Ikke OK"
    End If
    Exit Function

fejl:
    IsCheckCifferOK = CVErr(xlErrNA)
End Function

Private Function MakeCheckCiffer(Number, lmin As Long, lmax As Long) As Variant
Dim Chksum                As Long
Dim tsum                  As Long
Dim x                      As Long
Dim chk                    As Long
Dim start                  As Boolean
    On Error GoTo fejl
    If Len(Number) < lmin Or Len(Number) > lmax Then GoTo fejl
    chk = Len(Number)
    Chksum = 0
    start = False
    For x = chk To 1 Step -1
        tsum = CInt(Mid(Number, x, 1)) * (start + 2)
        start = Not start
        If tsum > 9 Then tsum = CInt(Left(tsum, 1)) + CInt(Mid(tsum, 2, 1))
        Chksum = Chksum + tsum
    Next
    Chksum = Chksum Mod 10
    If Chksum <> 0 Then Chksum = 10 - Chksum
    MakeCheckCiffer = Chksum
    Exit Function
fejl:
    MakeCheckCiffer = CVErr(xlErrNA)
End Function


Og formel i regnearket:

findcheckciffer(F57;F56)
Avatar billede vejmand Juniormester
14. januar 2008 - 12:13 #5
Ups, når vi er ude i VBA står jeg desværre af.
Men der er jo heldigvis så mange andre herinde som er stærke i den sag, så du får sikkert hurtig svar.  :-)
Avatar billede excelent Ekspert
14. januar 2008 - 13:32 #6
=TEXT(A1;"000000000000000")
Avatar billede mira96ac Novice
14. januar 2008 - 13:40 #7
Det kan jeg desværre ikke lige forstå Excelent ?

Men jeg har løst det sådan:

Slettet linien:
If Len(Number) < lmin Or Len(Number) > lmax Then GoTo fejl

Da jeg ved at jeg altid bruger et 71-indbetalingskort

Og tilføjet denne formel i cellen med betalingsID:

=HØJRE(GENTAG(0;15)&I10;15-1) &findcheckciffer(I10;71)
Avatar billede mira96ac Novice
15. februar 2008 - 12:35 #8
Lukker
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