Luhn algoritması ile IMEI kontrolü

Katılım
10 Eylül 2005
Mesajlar
97
Merhaba değerli arkadaşlar,

Cep telefonlarında kullanılan IMEI numaralarının kontrolü için bir form oluşturmak istiyorum.
IMEI kodu nasıl hesaplanır önce ona bakalım.

49015420323751? IMEI numarasının soru işareti gelecek kısmını nasıl buluyoruz.

1. Önce tüm basamakları ayıralım
2. İlk rakam çarpı 1, ikinci çarpı 2 (Bir boş bir dolu) hesaplayalım
3. Tüm rakamları toplayalım.
4. Toplam rakım, 10'un katları olan bir üst seviyeden çıkaralım. Kalan bize kontrol numarasını verir. Örnekte 60 - 52 = 8 şeklinde

ÖRNEK=>

IMEI 4 9 0 1 5 4 2 0 3 2 3 7 5 1 ?
KODLAMA 4 (18) 0 (2) 5 (8) 2 (0) 3 (4) 3 (14) 5 (2) ?
TOPLAM 4 + (1 + 8) + 0 + 2 + 5 + 8 + 2 + 0 + 3 + 4 + 3 + (1 + 4) + 5 + 2 + ? = 52 + ?

Şimdi arkadaşlar, excelde iki sütunumuz var. İlk sütunda 49015420323751? bigi kontrol kodu bilinmeyen numaralar var. Diğer sütunda ise sonuçları görüyoruz. İşte basit sorumuz bundan ibaret :)

Bir seferde binlerce numarayı kontrol edebileceğimiz bir yapı oluşturmalıyız. Aksi halde her seferinde numara yazıp hesaplama yapmak çoooook uzun bir uğraş olur.

Tüm uzmanlarımın ellerinden öperim. (Örnek ektedir.)
 

Ekli dosyalar

Katılım
10 Eylül 2005
Mesajlar
97
Yabanci bir sitede şu kodu buldum. Excel içinde ama nasıl uygularım bilmiyorum
___________________________________________________________________

'This is the Luhn Formula as described in ISO/IEC 7812-1:1993.
'Its primary purpose is to ensure accurate entries of the credit card number
'during transactions. You can apply the same technique to other applications
'such as employee numbers or patient numbers. Using check digits for these
'numbers also ensures more accurate data entries.

Public Function CheckDigit(strNum As String) As Integer

Dim i As Integer
Dim iEven As Integer
Dim iOdd As Integer
Dim iTotal As Integer
Dim strOneChar As String
Dim iTemp As Integer

' Add digits in even ordinal positions
' starting from rightmost
For i = Len(strNum) - 1 To 2 Step -2

strOneChar = Mid$(strNum, i, 1)
If IsNumeric(strOneChar) Then
iEven = iEven + CInt(strOneChar)
End If
Next i

' Process digits in odd ordinal positions
' starting from rightmost
For i = Len(strNum) To 1 Step -2
strOneChar = Mid$(strNum, i, 1)
If IsNumeric(strOneChar) Then
' Double it
iTemp = CInt(strOneChar) * 2
If iTemp > 9 Then
' Break the digits (e.g., 19 becomes 1+9)
iOdd = iOdd + (iTemp \ 10) + (iTemp - 10)
Else
iOdd = iOdd + iTemp
End If
End If
Next i

' Add even and odd
iTotal = iEven + iOdd

' Return the 10's complement
CheckDigit = 10 - (iTotal Mod 10)

End Function
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,058
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Merhaba,

Verdiğiniz örnek ile bulduğunuz fonksiyon 2 döndürüyor.. Doğru olan "8" mi?
 
Katılım
10 Eylül 2005
Mesajlar
97
Merhaba,

Verdiğiniz örnek ile bulduğunuz fonksiyon 2 döndürüyor.. Doğru olan "8" mi?
Evet doğru cevap 8 olmalı
(60-52=8)

Bulduğum kodun ne anlama geldiğini bilmiyorum. O sanırın 15 digit'in doğruluk kontrolünü yapıyor. Ben ise 14 digit yazacağım. bana 15 digit sonuç verecek.
 
E

ExcelF1

Misafir
Konuya mesaj yazılınca, (ve benim de şu an canım sıkılırken) alternatif olsun diye bir uğraşayım dedim, aşağıdaki kodlama çıktı.

Ek'li dosyada, Sayın dentex'in kodları da vardır. Belki yardımcı olur düşüncesi ile yazdığım kodlamanın açıklamasını da yapmaya çalıştık. Dilerim faydası olur.
 

Ekli dosyalar

Son düzenleme:

Murat OSMA

Altın Üye
Altın Üye
Katılım
23 Mayıs 2011
Mesajlar
5,501
Excel Vers. ve Dili
Microsoft 365 TR-EN
İndirmek istediğinizde gelen sayfayı zahmet edip okursanız; indirememenizin sebeplerini öğrenebilirsiniz.
 
Katılım
7 Mayıs 2020
Mesajlar
1
Excel Vers. ve Dili
v3
Merhaba değerli arkadaşlar,

Cep telefonlarında kullanılan IMEI numaralarının kontrolü için bir form oluşturmak istiyorum.
IMEI kodu nasıl hesaplanır önce ona bakalım.

49015420323751? IMEI numarasının soru işareti gelecek kısmını nasıl buluyoruz.

1. Önce tüm basamakları ayıralım
2. İlk rakam çarpı 1, ikinci çarpı 2 (Bir boş bir dolu) hesaplayalım
3. Tüm rakamları toplayalım.
4. Toplam rakım, 10'un katları olan bir üst seviyeden çıkaralım. Kalan bize kontrol numarasını verir. Örnekte 60 - 52 = 8 şeklinde

ÖRNEK=>

IMEI 4 9 0 1 5 4 2 0 3 2 3 7 5 1 ?
KODLAMA 4 (18) 0 (2) 5 (8) 2 (0) 3 (4) 3 (14) 5 (2) ?
TOPLAM 4 + (1 + 8) + 0 + 2 + 5 + 8 + 2 + 0 + 3 + 4 + 3 + (1 + 4) + 5 + 2 + ? = 52 + ?

Şimdi arkadaşlar, excelde iki sütunumuz var. İlk sütunda 49015420323751? bigi kontrol kodu bilinmeyen numaralar var. Diğer sütunda ise sonuçları görüyoruz. İşte basit sorumuz bundan ibaret :)

Bir seferde binlerce numarayı kontrol edebileceğimiz bir yapı oluşturmalıyız. Aksi halde her seferinde numara yazıp hesaplama yapmak çoooook uzun bir uğraş olur.

Tüm uzmanlarımın ellerinden öperim. (Örnek ektedir.)
IMEI Luhn excel tablosuna ihtiyacım var acaba yardımcı olur musunuz? ersen@lte.com.tr adresine atarsanız memnun olurum?
 
Üst