本文へスキップ
App Museum
English

JAN・EANコードのチェックデジット計算方法と確認手順

JANコード(EAN-13・EAN-8)やUPCのチェックデジット(最後の1桁)を求める「モジュラス10 ウェイト3・1」の計算式、手計算と表計算での求め方、エラー時の確認手順を解説します。

公開日

チェックデジット(モジュラス10 ウェイト3・1)の計算手順

JANコード(EAN-13・EAN-8)やUPC-A、ITF-14の最後の1桁であるチェックデジットは、国際規格(GS1規格)で定められた「モジュラス10 ウェイト3・1」というアルゴリズムで計算します。最後の桁を除いた数字列に対し、チェックデジットの直前の桁(右端)から左に向かって「3」「1」の重みを交互に掛け、その合計の一の位を10から引いた値(10なら0)がチェックデジットです。

計算手順は次の4段階です。

  1. チェックデジットを除く数字列を用意します(JAN-13なら先頭12桁、EAN-8なら先頭7桁、UPC-Aなら先頭11桁)。
  2. チェックデジットのすぐ左隣の桁から左に向かって、交互に「3」「1」「3」「1」…と重みを掛けます。
  3. すべての積を合計します。
  4. 合計を10で割った余りを求めます。余りが0ならチェックデジットは0です。余りが1〜9なら、10からその余りを引いた値がチェックデジットになります。

式で表すと次のようになります。

チェックデジット = (10 - (重み付き合計 mod 10)) mod 10

合計の一の位が6であれば 10 - 6 = 4、合計の一の位が0であればチェックデジットは0です。

なぜ「奇数桁×3」と「奇数桁×1」の両方の説明があるのか

インターネット上の解説や書籍によって、「奇数桁に3を掛ける」「奇数桁に1を掛ける」と説明が異なり、混乱することがあります。この食い違いは、**桁の位置を「左から数えているか」「右から数えているか」**の違いによるものです。

GS1の規格は、バーコード全体の桁数にかかわらず**「チェックデジットの直前(右端)から左へ向かって 3, 1, 3, 1…」**と定めています。これを左から数えた場合、バーコードの種類によってデータ桁数が偶数か奇数かが異なるため、見かけ上のルールが逆転します。

  • JAN-13 / EAN-13(データ12桁・偶数): 左から数えると、奇数番目の桁(1, 3, 5, 7, 9, 11桁目)の重みが1、偶数番目の桁(2, 4, 6, 8, 10, 12桁目)の重みが3になります。
  • UPC-A(データ11桁・奇数): 左から数えると、奇数番目の桁(1, 3, 5, 7, 9, 11桁目)の重みが3、偶数番目の桁(2, 4, 6, 8, 10桁目)の重みが1になります。
  • EAN-8(データ7桁・奇数): 左から数えると、奇数番目の桁(1, 3, 5, 7桁目)の重みが3、偶数番目の桁(2, 4, 6桁目)の重みが1になります。
  • ITF-14(データ13桁・奇数): 左から数えると、奇数番目の桁の重みが3、偶数番目の桁の重みが1になります。

このように、左から数えようとすると規格ごとに奇数・偶数の重みが入れ替わってしまいます。「チェックデジットの直前から左に向かって 3、1、3、1」と覚えるのが、どのバーコードにも共通する確実な方法です。

具体例:JAN-13(EAN-13)の手計算

日本の標準的なJANコード 490123456789(先頭12桁)を例に、チェックデジットを手計算してみます。

左からの位置と重み、計算結果を整理すると次の表のようになります。

| 左からの位置 | 数字 | 重み | 積 | | :----------- | :--- | :--- | :-- | | 1桁目 | 4 | 1 | 4 | | 2桁目 | 9 | 3 | 27 | | 3桁目 | 0 | 1 | 0 | | 4桁目 | 1 | 3 | 3 | | 5桁目 | 2 | 1 | 2 | | 6桁目 | 3 | 3 | 9 | | 7桁目 | 4 | 1 | 4 | | 8桁目 | 5 | 3 | 15 | | 9桁目 | 6 | 1 | 6 | | 10桁目 | 7 | 3 | 21 | | 11桁目 | 8 | 1 | 8 | | 12桁目 | 9 | 3 | 27 |

計算の進め方:

  1. 重み1の桁の合計: 4 + 0 + 2 + 4 + 6 + 8 = 24
  2. 重み3の桁の合計: 27 + 3 + 9 + 15 + 21 + 27 = 102
  3. 全体の合計: 24 + 102 = 126
  4. 一の位(10で割った余り): 126 mod 10 = 6
  5. チェックデジット: 10 - 6 = 4

したがって、13桁の完全なJANコードは 4901234567894 になります。

もし合計が 130 のように一の位が 0 になった場合は、10 - 0 = 10 ではなくチェックデジットは 0 になります。

表計算(Excel・Googleスプレッドシート)での計算式

商品リストや在庫表の管理で、セルに入力された12桁の数字からチェックデジットを自動計算したい場合は、次の計算式を使えます。

A1セルに12桁の文字列が入っている場合、チェックデジットを求める数式は次のとおりです。

=MOD(10 - MOD(SUMPRODUCT(MID(A1, {1,3,5,7,9,11}, 1)*1) + SUMPRODUCT(MID(A1, {2,4,6,8,10,12}, 1)*3), 10), 10)

この数式では、MID 関数で奇数桁と偶数桁をそれぞれ取り出し、SUMPRODUCT で重み(1と3)を掛けて合算したうえで、MOD 関数で10の補数を求めています。

元の12桁の後ろにチェックデジットを連結して13桁のJANコードにするには、文字列連結記号 & を使います。

=A1 & MOD(10 - MOD(SUMPRODUCT(MID(A1, {1,3,5,7,9,11}, 1)*1) + SUMPRODUCT(MID(A1, {2,4,6,8,10,12}, 1)*3), 10), 10)

先頭のゼロ落ちに注意する

バーコードの数値をExcelで入力するとき、セルの書式が「標準」や「数値」になっていると、UPC-Aのように先頭が 0 のコードで先頭のゼロが消えて11桁になってしまいます。桁数がずれるとチェックデジットの計算結果が狂うため、バーコードを扱う列の表示形式は必ず**「文字列」**に設定するか、入力時に先頭にシングルクォート('01234567890)を付けてください。

チェックデジットエラーが起きる原因と確認手順

スキャナーや店舗レジ、登録システムで「チェックデジットエラー」や「無効なバーコード」と判定される場合、主な原因は次の4つです。

1. 1桁の入力間違い(誤記)

数字の打ち間違いです。モジュラス10 ウェイト3・1は、1箇所の誤記であれば100%検出できるように設計されています。1桁でも違う数字が入力されると合計の一の位が変わるため、チェックデジットと不一致になります。

2. 隣り合う数字の入れ替わり(転置エラー)

手入力の際に 23 を 32 と打ち間違えるような、隣接する桁の入れ替わりです。重みが交互に「1」「3」となっているため、入れ替わった2つの数字の差が5(例:1と6、2と7、3と8など)である場合を除き、計算結果が変化してエラーとして検出されます。

3. 桁数の誤解(すでに13桁あるコードから再計算した)

手元にある13桁の完成したJANコードに対して、先頭11桁や末尾を除いた部分から再計算してしまうケースです。JAN-13のチェックデジットはあくまで「先頭12桁」から計算される13桁目の数字です。

4. プリフィックス(国番号・用途区分)の誤認

JANコードの先頭桁には国際的な意味が割り振られています。

  • 45 または 49: 日本のGS1事業者コード
  • 02, 20〜29: 店舗や倉庫内だけで独自に使うインストアコード(計量商品や社内備品など)
  • 978, 979: 書籍(ISBN)、9790: 楽譜(ISMN)

インストアコードのバーコードを外部の流通システムに登録しようとしたり、ISBNの13桁変換ルールと混同していないか確認してください。

バーコード作成ツールでの自動計算と検証

手計算や数式を組む手間を省きたいときや、印刷用のバーコード画像を作成したいときは、App Museumのバーコード作成ツールを活用できます。

  • チェックデジットの自動補完: 「データ」欄にチェックデジットを除いた12桁(JAN-13)を入力すると、自動的に正しいチェックデジットを計算してバーコードを生成します。
  • 誤りの検出とワンクリック修正: 最後の桁を含めた13桁を入力した場合、入力されたチェックデジットが計算値と合っているかを照合します。もし打ち間違いで不一致になっている場合は、警告メッセージとともに「最後の桁を ○ に直す」ボタンが表示され、正しいコードに修正できます。
  • 印刷用PDFの一括作成: 複数の商品番号や管理番号を1行に1つずつ入力するか連番機能を使うことで、チェックデジット付きのバーコードを用紙(A4・レター)に面付けした印刷用PDFとしてまとめて出力できます。

バーコード画像の出力(SVG/PNG)やPDF作成はすべてブラウザ内で完結し、入力した製品コードや管理番号が外部サーバーへ送信されることはありません。

参考資料

変換barcodejaneanupccheck-digit
  • バーコード作成ツール

    JANコード(EAN-13・短縮8桁)、UPC-A、ITF-14、CODE128、CODE39、NW-7のバーコードを作り、PNGまたはSVGで保存できます。チェックデジットは自動で計算・確認し、細いバーの幅と高さをmmで指定して印刷用の大きさにできます。1行に1つずつ入れた番号や連番を、A4・レターの印刷用PDFにまとめて並べることもできます。

    ユーティリティ変換barcodejaneanupcitfcode128code39nw-7codabarcheck-digitgeneratorpngsvgpdflabel