[ aca89_ @ 06.02.2017. 21:37 ] @
Broj od 11 brojki (bez kontrolne brojke) je: 50 72 20 05 093. Kontrolna brojka se određuje tako da se cifre u broju kola od 11 Cifara na neparnom mestu pomnože sa 2 i saberu sa ciframa na parnom mestu. Zbir se oduzme od prvog većeg broja koji se završava nulom i rezultat je kontrolni broj. Ako se prilikom množenja brojki na neparnom mestu dobije dvocifren broj onda se on pretvara u jednocifren sabiranjem jedinice i desetice (npr. 2X7 = 14 » 1 + 4 = 5 ili 2 X 5 = 10- 1 + 0 = 1) i potom se sabira sa ostalim ciframa. U primeru je:
(5 X 2) + 0 + (7 X 2) + 2 + 2 X 2 + 0 + (0 h 2)+ 5 + (0 h 2) + 9+3 h 2 = 1 + 0 + 5 + 2 + 4 + 0 + 0 + 5 + 0 + 9 + 6 = 32
Kontrolna cifra je 40 - 32 =8

Broj se upisuje u više ćelija, primer u prilogu...
[ drvlada75 @ 07.02.2017. 14:53 ] @
Odakle 40?
[ djoka_l @ 07.02.2017. 16:21 ] @
Code:

Function kontrolni_broj(str As String) As Variant
  
  l = Len(str)
  If l <> 11 Then
    'MsgBox "Dužina stringa (" & l & ") nije 11 karaktera!"
    kontrolni_broj = CVErr(xlErrValue)
    Exit Function
  End If
  
  tmp = 0
  For i = 1 To l
    char = Mid(str, i, 1)
    If char < "0" Or char > "9" Then
      'MsgBox "Na poziciji (" & i & ") se nalazi nenumerički znak (" & char & ")!"
      kontrolni_broj = CVErr(xlErrValue)
      Exit Function
    End If
    char = Val(char)
    
    If (i Mod 2) = 0 Then
      tmp = tmp + char
    Else
      times2 = char * 2
      If times2 < 10 Then
        tmp = tmp + times2
      Else
        tmp = tmp + (times2 Mod 10) + Int(times2 / 10)
      End If
    End If
  Next i
  
  Debug.Print tmp
  
  kontrolni_broj = (10 - (tmp Mod 10)) Mod 10
  
End Function


formula u ćeliji F1
=kontrolni_broj(A1&B1&C1&D1)
[ Ivek33 @ 07.02.2017. 20:23 ] @
Uz jednostavniji VBA koji ti je dao @djoka_I, ako hoćeš formulu (jeste da je katastrofalno dugačka ali radi :)
Code:
=MROUND(SUM(IF(LEN(MID(A1&B1&C1&D1;1;1)*2)>1;(MID(MID(A1&B1&C1&D1;1;1)*2;1;1)*1+MID(MID(A1&B1&C1&D1;1;1)*2;2;1)*1);MID(A1&B1&C1&D1;1;1)*2);MID(A1&B1&C1&D1;2;1)*1;IF(LEN(MID(A1&B1&C1&D1;3;1)*2)>1;(MID(MID(A1&B1&C1&D1;3;1)*2;1;1)*1+MID(MID(A1&B1&C1&D1;3;1)*2;2;1)*1);MID(A1&B1&C1&D1;3;1)*2);MID(A1&B1&C1&D1;4;1)*1;IF(LEN(MID(A1&B1&C1&D1;5;1)*2)>1;(MID(MID(A1&B1&C1&D1;5;1)*2;1;1)*1+MID(MID(A1&B1&C1&D1;5;1)*2;2;1)*1);MID(A1&B1&C1&D1;5;1)*2);MID(A1&B1&C1&D1;6;1)*1;IF(LEN(MID(A1&B1&C1&D1;7;1)*2)>1;(MID(MID(A1&B1&C1&D1;7;1)*2;1;1)*1+MID(MID(A1&B1&C1&D1;7;1)*2;2;1)*1);MID(A1&B1&C1&D1;7;1)*2);MID(A1&B1&C1&D1;8;1)*1;IF(LEN(MID(A1&B1&C1&D1;9;1)*2)>1;(MID(MID(A1&B1&C1&D1;9;1)*2;1;1)*1+MID(MID(A1&B1&C1&D1;9;1)*2;2;1)*1);MID(A1&B1&C1&D1;9;1)*2);MID(A1&B1&C1&D1;10;1)*1;IF(LEN(MID(A1&B1&C1&D1;11;1)*2)>1;(MID(MID(A1&B1&C1&D1;11;1)*2;1;1)*1+MID(MID(A1&B1&C1&D1;11;1)*2;2;1)*1);MID(A1&B1&C1&D1;11;1)*2));10)+10-SUM(IF(LEN(MID(A1&B1&C1&D1;1;1)*2)>1;(MID(MID(A1&B1&C1&D1;1;1)*2;1;1)*1+MID(MID(A1&B1&C1&D1;1;1)*2;2;1)*1);MID(A1&B1&C1&D1;1;1)*2);MID(A1&B1&C1&D1;2;1)*1;IF(LEN(MID(A1&B1&C1&D1;3;1)*2)>1;(MID(MID(A1&B1&C1&D1;3;1)*2;1;1)*1+MID(MID(A1&B1&C1&D1;3;1)*2;2;1)*1);MID(A1&B1&C1&D1;3;1)*2);MID(A1&B1&C1&D1;4;1)*1;IF(LEN(MID(A1&B1&C1&D1;5;1)*2)>1;(MID(MID(A1&B1&C1&D1;5;1)*2;1;1)*1+MID(MID(A1&B1&C1&D1;5;1)*2;2;1)*1);MID(A1&B1&C1&D1;5;1)*2);MID(A1&B1&C1&D1;6;1)*1;IF(LEN(MID(A1&B1&C1&D1;7;1)*2)>1;(MID(MID(A1&B1&C1&D1;7;1)*2;1;1)*1+MID(MID(A1&B1&C1&D1;7;1)*2;2;1)*1);MID(A1&B1&C1&D1;7;1)*2);MID(A1&B1&C1&D1;8;1)*1;IF(LEN(MID(A1&B1&C1&D1;9;1)*2)>1;(MID(MID(A1&B1&C1&D1;9;1)*2;1;1)*1+MID(MID(A1&B1&C1&D1;9;1)*2;2;1)*1);MID(A1&B1&C1&D1;9;1)*2);MID(A1&B1&C1&D1;10;1)*1;IF(LEN(MID(A1&B1&C1&D1;11;1)*2)>1;(MID(MID(A1&B1&C1&D1;11;1)*2;1;1)*1+MID(MID(A1&B1&C1&D1;11;1)*2;2;1)*1);MID(A1&B1&C1&D1;11;1)*2))
[ Ivek33 @ 07.02.2017. 20:30 ] @
Citat:
drvlada75:
Odakle 40?

Prvi veći djeljiv sa 10 od broja 32 je 40.
(tj. prvi veći koji završava sa nulom)
[ aca89_ @ 07.02.2017. 21:29 ] @
Hvala,
postoji još jedan uslov "kontrolni broj" mora da bude jednocifren ili je 0 ako je rezultat okruglo 50, ili 40
[ djoka_l @ 07.02.2017. 21:57 ] @
To radi moja funkcija:

Code:
kontrolni_broj = (10 - (tmp Mod 10)) Mod 10
[ drvlada75 @ 08.02.2017. 04:59 ] @
Citat:
Ivek33: Prvi veći djeljiv sa 10 od broja 32 je 40.
(tj. prvi veći koji završava sa nulom)

Hvala ivek33.
Ja sam razumeo da se taj broj iscitava iz pocetnog broja za koji treba odrediti kontrolnu cifru
[ Ivek33 @ 08.02.2017. 15:18 ] @
Citat:
aca89_:
Hvala,
postoji još jedan uslov "kontrolni broj" mora da bude jednocifren ili je 0 ako je rezultat okruglo 50, ili 40
jel te zadovoljava rješenje koje je dao djoka_I? ili hoćeš baš formulu?