EAN Code mit Excel auf Richtigkeit prüfen - Prüfsumme?

  • #1
T

Torti

Guest
Guten Abend,

ich hab ein Problem, dass mich langsam zur Verzweiflung treibt.

Ich muss mit Excel EAN Codes (13-stellig) auf ihre Richtigkeit hin überprüfen.
Gibt es dafür eine Formel?

Beispiel:

Ich lade aus der Datenbank die EAN.

Im Feld (beispielweise) A1 steht 4023500041012 und er sagt mir: FALSCH
Im Feld A2 steht 4023500041010 und er sagt mir: RICHTIG

Jetzt die berühmte Frage...wie mach ich das? Würd mich über Antworten - zu dem doch komplexen Thema - freuen!

P.S. Externe Software kann ich dafür leider nicht verwenden :(. Das müsste mit Excel erfolgen!
 
  • #2
  • #3
Die Prüffunktion sähe folgendermassen aus:
Code:
Function EAN13CodePruefen(sEAN_No As String) As Boolean
'*** Überprüfung eines EAN 13 Codes ohne Bindestrich
'*** (ggf. enthaltenen Bindestriche werden entfernt)
'*** a) Länge 13 Zeichen
'*** b) alles Ziffern
'*** c) Prüfziffer ist ok
'*** Berechnung der Prüfziffer:
'***  Die Prüfziffer der EAN, die letzte Ziffer (xn), errechnet sich,
'***  indem die einzelnen Ziffern von rechts nach links, beginnend mit der vorletzten (xn - 1),
'***  abwechselnd mit 3 und 1 multipliziert und anschließend diese Produkte addiert werden. ().
'***  Die Prüfziffer ergänzt diese Summe dann zum nächsten Vielfachen von 10.

  Const cEAN_LAENGE = 13
  Dim x As Long, lSumme As Long, lZahl As Long, lPruefziffer As Long, pos As Long
  Dim s As String, sEANNo As String
  Dim bFlipFlop As Boolean
  
  EAN13CodePruefen = False
  
  sEANNo = sEAN_No
 ->Bindestriche entfernen
  pos = InStr(1, sEANNo, -)
  Do While pos > 0
    sEANNo = Left(sEANNo, pos - 1) & Right(sEANNo, Len(sEANNo) - pos)
    pos = InStr(1, sEANNo, -)
  Loop
  
 ->a) Länge 13 Zeichen
  If Len(sEANNo) <> cEAN_LAENGE Then Exit Function

 ->b) alles Ziffern
  For x = 1 To cEAN_LAENGE
    s = Mid(sEANNo, x, 1)
    Select Case s: Case 0 To 9: Case Else: Exit Function: End Select
  Next
  
  
 ->c) Prüfziffer ist ok
 ->Prüfziffer berechnen
  lSumme = 0
  bFlipFlop = False
  For x = 1 To cEAN_LAENGE - 1
    lZahl = Mid(sEANNo, cEAN_LAENGE - x, 1)
    If Not bFlipFlop Then lZahl = lZahl * 3
    lSumme = lSumme + lZahl
    bFlipFlop = Not bFlipFlop
  Next
  lPruefziffer = lSumme Mod 10
  If lPruefziffer <> 0 Then lPruefziffer = 10 - lPruefziffer
 ->Prüfziffer vergleichen
  lZahl = Mid(sEANNo, cEAN_LAENGE, 1)
  If lZahl <> lPruefziffer Then Exit Function
  
  EAN13CodePruefen = True
  
End Function

Zum Testen eine Aufruf-Funktion, die den Wert aus A1 holt und dann die Bewertung als Messagebox ausgibt.
Code:
Sub TestEanNo_InA1()

  Dim s As String
  s = ActiveSheet.Range(A1).Value
  If EAN13CodePruefen(s) Then MsgBox true & s Else MsgBox false & s
End Sub

Gruß Matjes :)
 
Thema:

EAN Code mit Excel auf Richtigkeit prüfen - Prüfsumme?

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben