Supportnet / Forum / Tabellenkalkulation
Prüfzifferdes EAN 13 code berechnen
Frage
wie kann ich die Prüfziffer des EAN Codes mit Excel berechnen?
Antwort 1 von rainberg
Hallo ???,
in A1 steht der zwölfstellige EAN-Code, deren Prüfziffer sich wie folgt berechnet.
=10-REST(SUMMENPRODUKT((0&TEIL($A1;SPALTE(1:1);1))*(REST(SPALTE(1:1);2)=0))*3+SUMMENPRODUKT((0&TEIL($A1;SPALTE(1:1);1))*REST(SPALTE(1:1);2));10)
Gruß
Rainer
in A1 steht der zwölfstellige EAN-Code, deren Prüfziffer sich wie folgt berechnet.
=10-REST(SUMMENPRODUKT((0&TEIL($A1;SPALTE(1:1);1))*(REST(SPALTE(1:1);2)=0))*3+SUMMENPRODUKT((0&TEIL($A1;SPALTE(1:1);1))*REST(SPALTE(1:1);2));10)
Gruß
Rainer
Antwort 2 von Papapalli
Hallo Rainer,
prima ganz toll danke dafür!
Nun aber meine Krux, die 12 stelligerEAN ist auf 3 Zellen verteilt.
A1 beinhaltet den 7 stelligen bbn
B1 einen 2 stelligen internene code
C1 eine 3 stellige fortlaufende Nummer.
diese drein acheinander gelesen ergeben den 12 stellligen EAN.
In D1 soll dann die Prüfziffer erscheinen.
Ich hab versuch deine Formel aufzudröseln, krieg es aber irgendwie nicht rictig hin.
kannst du da auch helfen?
Grüße und vorabs chönen DANK
Guido
prima ganz toll danke dafür!
Nun aber meine Krux, die 12 stelligerEAN ist auf 3 Zellen verteilt.
A1 beinhaltet den 7 stelligen bbn
B1 einen 2 stelligen internene code
C1 eine 3 stellige fortlaufende Nummer.
diese drein acheinander gelesen ergeben den 12 stellligen EAN.
In D1 soll dann die Prüfziffer erscheinen.
Ich hab versuch deine Formel aufzudröseln, krieg es aber irgendwie nicht rictig hin.
kannst du da auch helfen?
Grüße und vorabs chönen DANK
Guido
Antwort 3 von rainberg
Hallo Guido,
dann würde ich dir raten die drei Teilwerte in einer Hilfsspalte zu verketten und in der Formel Bezug auf diese nehmen.
Beispiel:
A1=1753545
B1=86
C1=523
D1=(A1&B1&C1)*1
E1=10-REST(SUMMENPRODUKT((0&TEIL($D1;SPALTE(1:1);1))*(REST(SPALTE(1:1);2)=0))*3+SUMMENPRODUKT((0&TEIL($D1;SPALTE(1:1);1))*REST(SPALTE(1:1);2));10)
Ohne Hilfsspalte würde sich die Formel so aufblähen, dass man die Übersicht verliert.
Gruß
Rainer
dann würde ich dir raten die drei Teilwerte in einer Hilfsspalte zu verketten und in der Formel Bezug auf diese nehmen.
Beispiel:
A1=1753545
B1=86
C1=523
D1=(A1&B1&C1)*1
E1=10-REST(SUMMENPRODUKT((0&TEIL($D1;SPALTE(1:1);1))*(REST(SPALTE(1:1);2)=0))*3+SUMMENPRODUKT((0&TEIL($D1;SPALTE(1:1);1))*REST(SPALTE(1:1);2));10)
Ohne Hilfsspalte würde sich die Formel so aufblähen, dass man die Übersicht verliert.
Gruß
Rainer
Antwort 4 von rainberg
Hallo Guido,
in der Formel war noch ein Fehler, hier die Korrektur
=10-REST(SUMMENPRODUKT((TEIL($D1;SPALTE(A1:L1);1))*(REST(SPALTE(A1:L1);2)=0))*3+SUMMENPRODUKT((TEIL($D1;SPALTE(A1:L1);1))*(REST(SPALTE(A1:L1);2)=1));10)
Gruß
Rainer
in der Formel war noch ein Fehler, hier die Korrektur
=10-REST(SUMMENPRODUKT((TEIL($D1;SPALTE(A1:L1);1))*(REST(SPALTE(A1:L1);2)=0))*3+SUMMENPRODUKT((TEIL($D1;SPALTE(A1:L1);1))*(REST(SPALTE(A1:L1);2)=1));10)
Gruß
Rainer
Antwort 5 von papapalli
Danke Rainer,
der Tip war heiß! Jetzt läuft die Tabelle, bis auf .............
Ergibt die Kennziffer eine 10 soll nur eine "Null "angegeben werden, kann ich das noch ausschließen mit einer "Wenn" Formel?
der Tip war heiß! Jetzt läuft die Tabelle, bis auf .............
Ergibt die Kennziffer eine 10 soll nur eine "Null "angegeben werden, kann ich das noch ausschließen mit einer "Wenn" Formel?
Antwort 6 von rainberg
Hallo Guido,
mit einer WENN-Abfrage wird die Formel ziemlich lang
=WENN(REST(SUMMENPRODUKT((TEIL($D1;SPALTE(A1:L1);1))*(REST(SPALTE(A1:L1);2)=0))*3+SUMMENPRODUKT((TEIL($D1;SPALTE(A1:L1);1))*(REST(SPALTE(A1:L1);2)=1));10)=0;0;10-REST(SUMMENPRODUKT((TEIL($D1;SPALTE(A1:L1);1))*(REST(SPALTE(A1:L1);2)=0))*3+SUMMENPRODUKT((TEIL($D1;SPALTE(A1:L1);1))*(REST(SPALTE(A1:L1);2)=1));10))
Mit SVERWEIS würde sie etwas kürzer
=SVERWEIS(REST(SUMMENPRODUKT((TEIL($D1;SPALTE(A1:L1);1))*(REST(SPALTE(A1:L1);2)=0))*3+SUMMENPRODUKT((TEIL($D1;SPALTE(A1:L1);1))*(REST(SPALTE(A1:L1);2)=1));10);I1:J11;2;0)
aber dazu müsstest du dir eine Hilfsstaffelung schaffen, die so aussieht
I___J
10 0
9 1
8 2
7 3
6 4
5 5
4 6
3 7
2 8
1 9
0 0
Kannst dazu auch einen anderen Zellbereich wählen und in der Formel entsprechend anpassen.
Vielleicht gibt es auch noch bessere Lösungen, aber mir fällt im Moment nichts Besseres ein
Gruß
Rainer
mit einer WENN-Abfrage wird die Formel ziemlich lang
=WENN(REST(SUMMENPRODUKT((TEIL($D1;SPALTE(A1:L1);1))*(REST(SPALTE(A1:L1);2)=0))*3+SUMMENPRODUKT((TEIL($D1;SPALTE(A1:L1);1))*(REST(SPALTE(A1:L1);2)=1));10)=0;0;10-REST(SUMMENPRODUKT((TEIL($D1;SPALTE(A1:L1);1))*(REST(SPALTE(A1:L1);2)=0))*3+SUMMENPRODUKT((TEIL($D1;SPALTE(A1:L1);1))*(REST(SPALTE(A1:L1);2)=1));10))
Mit SVERWEIS würde sie etwas kürzer
=SVERWEIS(REST(SUMMENPRODUKT((TEIL($D1;SPALTE(A1:L1);1))*(REST(SPALTE(A1:L1);2)=0))*3+SUMMENPRODUKT((TEIL($D1;SPALTE(A1:L1);1))*(REST(SPALTE(A1:L1);2)=1));10);I1:J11;2;0)
aber dazu müsstest du dir eine Hilfsstaffelung schaffen, die so aussieht
I___J
10 0
9 1
8 2
7 3
6 4
5 5
4 6
3 7
2 8
1 9
0 0
Kannst dazu auch einen anderen Zellbereich wählen und in der Formel entsprechend anpassen.
Vielleicht gibt es auch noch bessere Lösungen, aber mir fällt im Moment nichts Besseres ein
Gruß
Rainer
Antwort 7 von Luke_Filewalker
@papapalli
Ergänzend dazu kannst Du die korrekte Funktion der Excel-Formeln bezüglich des EAN-Codes und deren Prüfziffer dann mit EAN13TT prüfen.
http://www.gateway-to-hell.com (in der Downloads Sektion)
Ergänzend dazu kannst Du die korrekte Funktion der Excel-Formeln bezüglich des EAN-Codes und deren Prüfziffer dann mit EAN13TT prüfen.
http://www.gateway-to-hell.com (in der Downloads Sektion)
Antwort 8 von Luke_Filewalker
Zusatz: Das hab ich dafür gerade mal online gestellt. War bisher ein internes Testtool bezüglich EAN13
Antwort 9 von papapalli
Dank an Rainer !
habe mir einfach eine zweite Hilfszelle gemacht dann ist die Wenn Formel nur ganz kurz.
Dank auch an Luke Filewalker!
habe mir einfach eine zweite Hilfszelle gemacht dann ist die Wenn Formel nur ganz kurz.
Dank auch an Luke Filewalker!
Antwort 10 von rainberg
Hallo Guido,
hier noch eine UDF, welche das Problem etwas erleichtert.
Kopiere den Code in ein allgemeines Modul, dann kannst due die Funktion mit
=przf(A1)
wenn der zwölfstellige Code in A1 seht.
Diese Formel kannst du kopieren wie jede andere.
Die Zelle mit dem Code muss als Text formatiert sein.
Gruß
Rainer
hier noch eine UDF, welche das Problem etwas erleichtert.
Kopiere den Code in ein allgemeines Modul, dann kannst due die Funktion mit
=przf(A1)
wenn der zwölfstellige Code in A1 seht.
Diese Formel kannst du kopieren wie jede andere.
Die Zelle mit dem Code muss als Text formatiert sein.
Public Function przf(strCode As String)
Dim intI As Integer
Dim intGer As Integer, intUng As Integer
For intI = 1 To 12
If intI Mod 2 = 0 Then
intGer = intGer + Val(Mid(strCode, intI, 1))
Else
intUng = intUng + Val(Mid(strCode, intI, 1))
End If
Next
If (intGer * 3 + intUng) Mod 10 = 0 Then
przf = 0
Else
przf = 10 - (intGer * 3 + intUng) Mod 10
End If
End Function
Gruß
Rainer

