© Сорокин Б.Б. 2016 г.

Хитрый ход

Однажды столкнулся с уже ранее описанной проблемой. Надо связать две таблички, но ключевые поля в них имеют разный формат: в одной общий а в другой текстовый. Привожу пример.

рисунок15

Как видно из рисунка мне нужно поле TF_OKATO, таблички 1 "привпэрить" к табличке 2. Однако функция ВПР брыкается и выдает #Н/Д. Как вариант решения проблемы можно табличку 2 сохранить в формате .DBF и потом в монопольном доступе попытаться изменить формат поля KOD_TO на текстовый. Однако такие варианты не всегда проходят, да и возится долго и неудобно. Другой вариант - можно задать полю KOD_TO текстовый формат, а потом перебить вручную коды. Надежен, но возни еще больше, особенно если табличка большая. И тут пришла в голову мысль, если функция СЦЕПИТЬ() возвращает данные в текстовом формате, нельзя ли её приспособить в этом случае. Попробовал и получилось вот так.

рисунок16

В данном случае у функции СЦЕПИТЬ только один аргумент, т.е. она ничего не сцепляет, да нам этого и не надо, а вот миссию по преобразованию в текстовый формат выполняет исправно.

формула

Развивая идею дальше можно сказать что в каком бы формате небыли ключевые поля их всегда можно привести к текстовому формату и обеспечить связь данных.

Вот такие хитрости. Как говорил один известный персонаж - "Хорошо знать иностранные языки."

P.S. Не так давно народ предложил вместо функции СЦЕПИТЬ() для этих целей использовать имеющуюся стандартную функцию ТЕКСТ(). Да это вполне возможно, тогда формула будет выглядеть так.

формула

Однако, если Вы заметили, функция ТЕКСТ(D3;"0"), кроме ссылки на ячейку, имеет еще второй параметр - формат. Что на мой взгляд усложняет ее применение в данном случае. Поэтому использование функции СЦЕПИТЬ() - хитрый ход!