вторник, 26 марта 2013 г.

Расчет контрольной цифры в штрих-коде EAN-13. Формула для Excel.

Некоторое время назад понадобилось сгенерировать много чисел в формате 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)

31 комментарий:

  1. Спасибо. Замучался сам формулу выписывать, а поиском нашел этот совет!

    ОтветитьУдалить
  2. я вроде не тупой, но не могу сообразить как воспользоваться этой формулой, не могли бы вы описать этот процесс по подробнее? заранее спасибо!

    ОтветитьУдалить
  3. всё очень просто. скопируй текст в текстовый редактор и замени [cell] на адрес ячейки. то есть адрес первой ячейки в Excel - это А1. после этого копируешь исправленный текст и вставляешь в B1, а в A1 вписываешь нужный тебе текст. и получаешь готовый результат. (A1)213600000001 (B1)2136000000011/

    ОтветитьУдалить
  4. Чуть проще=[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)

    ОтветитьУдалить
    Ответы
    1. Проще то проще, но формула не правильная ))) выходят ошибки с периодичностью 10 значений

      Удалить
  5. XT то не фига не получается. Вставляю формулу в B1, все 12 цифр в A1. cell заменен на А1. Может я чего то не понимаю

    ОтветитьУдалить
    Ответы
    1. Заменять нужно не просто cell, а [cell] вместе со скобками.

      Удалить
    2. спасибо большое Важное уточнение

      Удалить
  6. Спасибо! Очень полезная вещь)

    ОтветитьУдалить
  7. день добрый. Пишу в А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)

    где туплю не подскажете?

    ОтветитьУдалить
    Ответы
    1. Результат правильный, просто у вас ШК представлен в виде экспоненциального числа.Меняйте формат ячейки на число. Число десятичных знаков поставьте 0.

      Удалить
  8. Меняйте формат ячейки на число. Число десятичных знаков поставьте 0

    ОтветитьУдалить
  9. А что сделать, чтобы формула подходила для кода EAN-8?

    ОтветитьУдалить
    Ответы
    1. С формулой не помогу, но могу помочь с генерацией самих ШК. У меня спец софт для этих целей. Контрольные цифры он считает сам. На выходе любой растровый или векторный формат. Количество ШК любое (обсуждаемо). Здесь подробнее https://kwork.ru/graphic-design/12440/sozdam-shtrikh-kody-vsekh-tipov-qr-kody-lyubie-numeratsii-i-podgotovlyu-k-pechati

      Удалить
  10. На основе Вашей формулы допилил для расчета контрольной цифры для 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)

    ОтветитьУдалить
    Ответы
    1. Да не работает это. И сам набирал, и ваши копировал и вставлял с нужной ячейкой. Ошибка в формуле. требует вставить функцию. Как вариант , может быть затык ещё в 10 винде...

      Удалить
  11. Большое человеческое спасибо ;)

    ОтветитьУдалить
  12. Благодарю автора за помощь и экономию времени ;)

    ОтветитьУдалить
  13. Добрый день. У меня в торговой сети Билла в ШК дополнительная 7 контрольная цифра в EAN 13. Как она рассчитывается?

    ОтветитьУдалить
  14. Я думал что этот код штрихкод делает в формате еан 13 но я разочировался

    ОтветитьУдалить
    Ответы
    1. Ну вроде бы понятно написано: Расчет контрольной цифры. О штрихкоде речь не идет. Если нужно сгенерировать штрихкоды обращайтесь. Любые и в любых количествах. Занимаюсь этим профессионально. https://www.fiverr.com/share/1EwAl0

      Удалить
  15. спасибо, супер, работает, прям то что надо

    ОтветитьУдалить
  16. Сегодня решал задачу о присвоении внутренних штрих-кодов для продукции, так вот все получилось, 13й символ рассчитывается отлично.
    Большое спасибо за проделанную работу еще в 2013 году, формула очень помогла!

    ОтветитьУдалить
  17. Спасибо вам, добрый человек! Я тоже столкнулась с этой задачей и уже засучила рукава сделать формулу, но решила сначала погуглить) Прямо от души благодарная, вы сэкономили мне минимум часа два!

    ОтветитьУдалить
  18. Очень помогло в форматировании самописных штрих-кодов. Только пробелы после названия функций и квадратные скобки уберите. Благодарочка за помощью

    ОтветитьУдалить
  19. Большое человеческое спасибо!

    ОтветитьУдалить