Supportnet Computer
Planet of Tech

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

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

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

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

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?

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

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)

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!

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.

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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: