NTM Solutions

Facebook Youtube Google+

Thứ Hai, 11 tháng 9, 2017

Kiểm tra ISO số CONTAINER

Quay về mục lục VBA Macro

Quy tắc chuẩn ISO của số CONTAINER

Ví dụ số Container : TGHU1234567

 01 số container gồm 02 phần:
  • Phần chữ: có 04 ký tự (chữ cái thứ 04 thường là chữ U)
  • Phần số: gồm 07 chữ số nguyên dương (trong đó số cuối cùng là check digit - số dùng để kiểm tra)
Ta sẽ dựa vào 10 ký tự đầu của số Container(TGHU123456) để tính ra số check digit và so sánh với số cuối cùng (số 7 trong ví dụ)
02 số này trùng nhau -> số Container này hợp lệ ISO

Quy tắc tìm số check digit như sau:
Ta có bảng tra giá trị tương ứng với các chữ:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
10
12
13
14
15
16
17
18
19
20
21
23
24
25
26
27
28
29
30
31
32
34
35
36
37
38

Lần lượt từ trái qua phải lấy số tương ứng với các chữ *2^n (bắt đầu từ 0->9)

Kí tự Số tương ứng Lũy thừa 2n Chi tiết Tách số
( a ) ( b ) ( c ) ( b ) x ( c ) ( e )
T 31 0 B5 x 20 31
G 17 1 B6 x 21 34
H 18 2 B7 x 22 72
U 32 3 B8 x 23 256
1 1 4 B9 x 24 16
2 2 5 B10 x 25 64
3 3 6 B11 x 26 192
4 4 7 B12 x 27 512
5 5 8 B13 x 28 1280
6 6 9 B14 x 29 3072
TỔNG 5529

Lấy tổng / 11 => số dư chính là check digit: số 7

Trùng với số cuối cùng của số container: TGHU1234567 => Số cont này hợp lệ

Các bạn xem thêm về chuẩn này tại trang:
https://www.bic-code.org/ (trang chính thức về chuẩn số CONTAINER)

Function KIEMTRA(Text As String)
'Copyright 2015 @ NGUYEN TRAN MINH
'All right reserved
'Mobi: (084) 0906 73 8682 (NGUYEN TRAN MINH)
'Function to check ISO standard of CONTAINER No

Dim MANG_SO, TONG As Integer
Dim MANG_CHU, S, EndChar As Byte 's la ky tu
Dim SoDung, EndNo, ChieuDai, i, j, k As Integer

ChieuDai = Len(Text)
Select Case ChieuDai
    Case 0
        KIEMTRA = "RONG!"
        Exit Function
    Case 1 To 10
        KIEMTRA = "THIÊ'U!"
        Exit Function
    Case Is > 11
        KIEMTRA = "TH" + ChrW(431) + "`A"
        Exit Function
End Select

MANG_CHU = Array("A", "B", "C", "D", "E", "F", "G", _
                    "H", "I", "J", "K", "L", "M", "N", _
                    "O", "P", "Q", "R", "S", "T", "U", _
                    "V", "W", "X", "Y", "Z", _
                    "0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
MANG_SO = Array(10, 12, 13, 14, 15, 16, 17, _
                18, 19, 20, 21, 23, 24, 25, _
                26, 27, 28, 29, 30, 31, 32, _
                34, 35, 36, 37, 38, _
                0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
KIEMTRA = "SAI!"
TONG = 0
EndChar = Mid(Text, 11, 1)
k = 0
For i = 1 To 35
    If EndChar = MANG_CHU(i) Then EndNo = MANG_SO(i)
Next i

For i = 1 To 10
    S = UCase(Mid(Text, i, 1))
    j = 1
    For j = 0 To 35
        If S = MANG_CHU(j) Then
            TONG = TONG + MANG_SO(j) * (2 ^ k)
            k = k + 1
        End If
    Next j

Next i
If (TONG Mod 11) = 10 Then
    SoDung = 0
Else
    SoDung = TONG Mod 11
End If
If SoDung = EndNo Then KIEMTRA = "ÐÚNG"

End Function

Tải xuống Phiên bản EXCEL
MD5-SHA256:
5FA3BF9B3B225E17738E0E973D9D7A3C8DD38222D204CB45B659DB80DF93952D


Tài xuống phần mềm kiểm tra ISO số CONTAINER (file add-in)
MD5-SHA256:
158E1C870C0FBE3D7F2EAC19D33ACA8B40EBC10A8DC983787AECED2EF3B8F858


Tải xuống phần mềm kiểm tra ISO số CONTAINER (for Android)
Tải xuống phần mềm kiểm tra ISO số CONTAINER (javascript)
Còn nữa...