投稿者 okigaru | 2013/03/24

チェックデジット モジュラス10ウエイト3

バーコードのチェックデジット
JAN13だと
490000012345C(右端のCがチェックデジット)
12345678910111213
13121110987654321(右から桁を数える)
x12x10x8x6x4x2(右から数えた偶数桁の数字)
13x11x9x7x5x3(右から数えた奇数桁の数字)

偶数桁の数字を全部足す
SUM ( 9 ; 0 ; 0 ; 1 ; 3 ; 5 )
これに3をかける
( SUM ( 9 ; 0 ; 0 ; 1 ; 3 ; 5 ) ) * 3 →a
奇数桁の数字を全部足す
SUM ( 4 ; 0 ; 0 ; 0 ; 2 ; 4 ) →b
a+b この下1桁 →c
10 – c これがチェックデジットに成ります

前置きが長く成りましたがJAN13のチェックデジット計算式
カスタム関数
JAN13_CD ( bar )
//引数の bar はテキスト
Let ( [
gu=
( Sum (
GetAsNumber ( Middle ( bar ; 2 ; 1 ) ) ;
GetAsNumber ( Middle ( bar ; 4 ; 1 ) ) ;
GetAsNumber ( Middle ( bar ; 6 ; 1 ) ) ;
GetAsNumber ( Middle ( bar ; 8 ; 1 ) ) ;
GetAsNumber ( Middle ( bar ; 10 ; 1 ) ) ;
GetAsNumber ( Middle ( bar ; 12 ; 1 ) ) ) ) * 3 ;
ki=
Sum (
GetAsNumber ( Middle ( bar ; 1 ; 1 ) ) ;
GetAsNumber ( Middle ( bar ; 3 ; 1 ) ) ;
GetAsNumber ( Middle ( bar ; 5 ; 1 ) ) ;
GetAsNumber ( Middle ( bar ; 7 ; 1 ) ) ;
GetAsNumber ( Middle ( bar ; 9 ; 1 ) ) ;
GetAsNumber ( Middle ( bar ; 11 ; 1 ) ) )
] ;
Right ( GetAsText ( 10 – GetAsNumber ( Right ( GetAsText ( gu + ki ) ; 1 ) ) ) ; 1 )
)

間違っていたらコメントして下さい





広告

カテゴリー

%d人のブロガーが「いいね」をつけました。