13.03.2007 13:05
OlegON
 
Код:
Sub EAN13()
For t = 1 To Excel.Selection.Cells.Count
NCet = 0
Cet = 0
Temp = Excel.Selection.Cells(t).Value
Temp2 = Str$(Temp)
For i = 2 To Len(Temp2) Step 2
NCet = NCet + Val(Mid$(Temp2, i - 1, 1))
Cet = Cet + Val(Mid$(Temp2, i, 1))
Next
NCet = NCet + Val(Mid$(Temp2, 13, 1))
Razn = 0 - (Int(0 - (((NCet * 3) + Cet) + 5) / 10)) * 10
Excel.Selection.Cells(t).Value = Val(Str$(Excel.Selection.Cells(t).Value) + Str$((Razn - ((NCet * 3) + Cet))))
Next
End Sub
13.03.2007 14:43
kadr
 
А я для этого FastReport пользовал, у него автоматом рассчитывается контролька
13.03.2007 14:49
OlegON
 
Это я в Уссурийске сидел, ковырялся, хорошо, хоть Эксль под рукой был, ноута тогда еще не дали. Надо было из номеров дисконток сделать им ш/к или какая-то такая хитрость. Давно было, не помню уже сути. Но как факт, была колонка номеров, надо было сделать из них ш/к... Там же, в эксле и скрипт на внесение номеров в базу собрали. Подручные средства. Но суть - алгоритм.
10.12.2016 09:03
OlegON
 
Если честно, не осилил, что я там такое написал в первом сообщении. Воспользовался следующим алгоритмом расчета EAN13 (на примере для кода 215000000001Х)
Цитата:
1. Снала сложим все цифры, стоящие на четных местах: 1+0+0+0+0+0+1=2
2. Полученную сумму умножим на три: 2х3=6
3. Далее сложим цифры, стоящие на нечетных местах:2+5+0+0+0+0=7
4. Затем сложим полученны цифры в пункта 2 и 3: 6+7=13
5. Отбрасывам десятки, получим 3
6. Наконец, из 10 вычетаем число из п.5 и получаем контрольную сумму: 10-3=7
вот скрипт расчета контрольной суммы EAN13 на BASH
Код:
#!/bin/bash
ean=$1
even=0
odd=0
for (( num=0; num<13; num+=2 )); do
    odd=$(( ${ean:num:1} + $odd))
    even=$(( ${ean:$((num+1)):1} +$even))
done
sum=$(( $(( $even * 3 )) + $odd ))
sum=${sum:$((${#sum}-1)):1}
sum=$(( 10 - $sum ))
sum=${sum:$((${#sum}-1)):1}
echo "$ean$sum"
добавил только условие, что если контролька 10, то 0
Часовой пояс GMT +3, время: 14:28.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.