Некоторое время назад понадобилось сгенерировать много чисел в формате EAN-13. Загвоздка была в расчете последней контрольной цифры в коде.Небольшой поиск в Сети принес эту формулу. Чтобы в следующий раз не искать - пусть здесь полежит.
Формула выводит все 13 цифр включая последнюю контрольную.
=[cell]*10+MOD (10-MOD (3*(MID ([cell];2;1)+MID ([cell];4;1)+MID ([cell];6;1)+MID ([cell];8;1)+MID ([cell];10;1)+MID ([cell];12;1))+MID ([cell];1;1)+MID ([cell];3;1)+MID ([cell];5;1)+MID ([cell];7;1)+MID ([cell];9;1)+MID ([cell];11;1);10);10)
[cell] - ячейка в которой 12-значный штрих-код.
В русской версии Excel вместо функций MOD и MID поставить ОСТАТ и ПСТР сответственно:
=[cell]*10+ОСТАТ(10-ОСТАТ(3*(ПСТР([cell];2;1)+ПСТР([cell];4;1)+ПСТР([cell];6;1)+ПСТР([cell];8;1)+ПСТР([cell];10;1)+ПСТР([cell];12;1))+ПСТР([cell];1;1)+ПСТР([cell];3;1)+ПСТР([cell];5;1)+ПСТР([cell];7;1)+ПСТР([cell];9;1)+ПСТР([cell];11;1);10);10)
Формула выводит все 13 цифр включая последнюю контрольную.
=[cell]*10+MOD (10-MOD (3*(MID ([cell];2;1)+MID ([cell];4;1)+MID ([cell];6;1)+MID ([cell];8;1)+MID ([cell];10;1)+MID ([cell];12;1))+MID ([cell];1;1)+MID ([cell];3;1)+MID ([cell];5;1)+MID ([cell];7;1)+MID ([cell];9;1)+MID ([cell];11;1);10);10)
[cell] - ячейка в которой 12-значный штрих-код.
В русской версии Excel вместо функций MOD и MID поставить ОСТАТ и ПСТР сответственно:
=[cell]*10+ОСТАТ(10-ОСТАТ(3*(ПСТР([cell];2;1)+ПСТР([cell];4;1)+ПСТР([cell];6;1)+ПСТР([cell];8;1)+ПСТР([cell];10;1)+ПСТР([cell];12;1))+ПСТР([cell];1;1)+ПСТР([cell];3;1)+ПСТР([cell];5;1)+ПСТР([cell];7;1)+ПСТР([cell];9;1)+ПСТР([cell];11;1);10);10)
Спасибо. Замучался сам формулу выписывать, а поиском нашел этот совет!
ОтветитьУдалитья вроде не тупой, но не могу сообразить как воспользоваться этой формулой, не могли бы вы описать этот процесс по подробнее? заранее спасибо!
ОтветитьУдалитьвсё очень просто. скопируй текст в текстовый редактор и замени [cell] на адрес ячейки. то есть адрес первой ячейки в Excel - это А1. после этого копируешь исправленный текст и вставляешь в B1, а в A1 вписываешь нужный тебе текст. и получаешь готовый результат. (A1)213600000001 (B1)2136000000011/
ОтветитьУдалитьЧуть проще=[cell]*10+10-ОСТАТ(3*(ПСТР([cell];2;1)+ПСТР([cell];4;1)+ПСТР([cell];6;1)+ПСТР([cell];8;1)+ПСТР([cell];10;1)+ПСТР([cell];12;1))+ПСТР([cell];1;1)+ПСТР([cell];3;1)+ПСТР([cell];5;1)+ПСТР([cell];7;1)+ПСТР([cell];9;1)+ПСТР([cell];11;1);10)
ОтветитьУдалитьПроще то проще, но формула не правильная ))) выходят ошибки с периодичностью 10 значений
УдалитьСпасибо за формулу :)
ОтветитьУдалитьСпасибо!!!
ОтветитьУдалитьСпасибо огромное!=)
ОтветитьУдалитьXT то не фига не получается. Вставляю формулу в B1, все 12 цифр в A1. cell заменен на А1. Может я чего то не понимаю
ОтветитьУдалитьЗаменять нужно не просто cell, а [cell] вместе со скобками.
Удалитьспасибо большое Важное уточнение
УдалитьСпасибо! Очень полезная вещь)
ОтветитьУдалитьдень добрый. Пишу в А1 вот такое значение 245404301000 выходит вот что 2,45404E+11 . в В1 вроде всё правильно сделал =A1*10+ОСТАТ(10-ОСТАТ(3*(ПСТР(A1;2;1)+ПСТР(A1;4;1)+ПСТР(A1;6;1)+ПСТР(A1;8;1)+ПСТР(A1;10;1)+ПСТР(A1;12;1))+ПСТР(A1;1;1)+ПСТР(A1;3;1)+ПСТР(A1;5;1)+ПСТР(A1;7;1)+ПСТР(A1;9;1)+ПСТР(A1;11;1);10);10)
ОтветитьУдалитьгде туплю не подскажете?
Результат правильный, просто у вас ШК представлен в виде экспоненциального числа.Меняйте формат ячейки на число. Число десятичных знаков поставьте 0.
УдалитьМеняйте формат ячейки на число. Число десятичных знаков поставьте 0
ОтветитьУдалитьА что сделать, чтобы формула подходила для кода EAN-8?
ОтветитьУдалитьС формулой не помогу, но могу помочь с генерацией самих ШК. У меня спец софт для этих целей. Контрольные цифры он считает сам. На выходе любой растровый или векторный формат. Количество ШК любое (обсуждаемо). Здесь подробнее https://kwork.ru/graphic-design/12440/sozdam-shtrikh-kody-vsekh-tipov-qr-kody-lyubie-numeratsii-i-podgotovlyu-k-pechati
УдалитьНа основе Вашей формулы допилил для расчета контрольной цифры для GTIN 14.
ОтветитьУдалитьВ ячейке Excel должен быть 13-значный номер, а формула добавит с к нему контрольный разряд.
В формуле переменную [cell] надо заменить на номер ячейки в Excel.
=[cell]*10+ОСТАТ(10-ОСТАТ(3*(ПСТР([cell];1;1)+ПСТР([cell];3;1)+ПСТР([cell];5;1)+ПСТР([cell];7;1)+ПСТР([cell];9;1)+ПСТР([cell];11;1)+ПСТР([cell];13;1))+ПСТР([cell];2;1)+ПСТР([cell];4;1)+ПСТР([cell];6;1)+ПСТР([cell];8;1)+ПСТР([cell];10;1)+ПСТР([cell];12;1);10);10)
Да не работает это. И сам набирал, и ваши копировал и вставлял с нужной ячейкой. Ошибка в формуле. требует вставить функцию. Как вариант , может быть затык ещё в 10 винде...
УдалитьБольшое человеческое спасибо ;)
ОтветитьУдалитьБлагодарю автора за помощь и экономию времени ;)
ОтветитьУдалитьДобрый день. У меня в торговой сети Билла в ШК дополнительная 7 контрольная цифра в EAN 13. Как она рассчитывается?
ОтветитьУдалитьвидимо это не EAN13 )
УдалитьБлагодарю!
ОтветитьУдалитьЯ думал что этот код штрихкод делает в формате еан 13 но я разочировался
ОтветитьУдалитьНу вроде бы понятно написано: Расчет контрольной цифры. О штрихкоде речь не идет. Если нужно сгенерировать штрихкоды обращайтесь. Любые и в любых количествах. Занимаюсь этим профессионально. https://www.fiverr.com/share/1EwAl0
Удалитьспасибо, супер, работает, прям то что надо
ОтветитьУдалитьСегодня решал задачу о присвоении внутренних штрих-кодов для продукции, так вот все получилось, 13й символ рассчитывается отлично.
ОтветитьУдалитьБольшое спасибо за проделанную работу еще в 2013 году, формула очень помогла!
Спасибо вам, добрый человек! Я тоже столкнулась с этой задачей и уже засучила рукава сделать формулу, но решила сначала погуглить) Прямо от души благодарная, вы сэкономили мне минимум часа два!
ОтветитьУдалитьОчень помогло в форматировании самописных штрих-кодов. Только пробелы после названия функций и квадратные скобки уберите. Благодарочка за помощью
ОтветитьУдалитьБольшое человеческое спасибо!
ОтветитьУдалить