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

Применение текстовых функций

Необходимость в применении тестовых функций часто возникает при преобразовании данных из одного вида в другой. Это бывает достаточно часто т.к. одни и те же данные в разных таблицах могут иметь разный вид и для связывания этих таблиц между собой (или выполнения сортировки по отдельным параметрам) приходится создавать ключевые поля с единой формой данных. Например в приведенной ниже таблице номер счета и дата объединены в единое значение в столбце "С", вполне возможно, что именно такой вид удобен пользователю, который создавал эту таблицу или такой вид необходим для создания уникального идентификатора счета, или по какой-то другой причине. Но, нам необходимо связывать или сортировать таблицу по номеру счета или дате, следовательно, из записи "Счет/Дата" надо выделить эти значения и поместить в отдельные поля записи или столбцы. Если табличка большая, руками делать придется долго, попробуем решить эту проблему, используя текстовые функции.

рисунок1

Выполнить это можно применив текстовые функции НАЙТИ (возвращает позицию заданного символа в тексте), ЛЕВСИМВ (возвращает заданное количество символов сначала текста, если конечно это не арабская вязь), ПСТР (выбирает в тексте заданное количество символов, начиная с указанной позиции).

Итак, для начала выделим номер счета. Для этого используем ниже приведенную конструкцию из формул.

=ЛЕВСИМВ(C2;НАЙТИ("/";C2;1)-1)

Здесь функция НАЙТИ() используется для определения порядкового номера знака "/" разделяющего номер счета и дату счета. Естественно должно выполняться условие, что номер счета и дата всегда будут разделены слешем "/". Если это не выполняется надо поискать другие надежные признаки для разделения номера и даты счета. Задача существенно упростится если количество знаков в номере счета всегда одинаково, но мы не ищем легких путей. От номера позиции слеша надо отнять "1", чтобы сам слеш в номер счета не попадал. Имеем результат в столбце "D".

Обращаю внимание, что номера счетов имеют текстовый формат, что не всегда удобно при сортировке. Если нужно, чтобы формат был цифровой - обработайте результат функцией ЗНАЧЕН() и тогда формула будет выглядеть так.

формула

Теперь займемся самой датой. Для выделения даты можно использовать функцию ПСТР(). Она позволяет выбрать определенное количество знаков из середины текста. При этом количество знаков можно задать и больше реального ( вдруг где то дату написали в формате ДД.ММ.ГГГГ) но это возможно если после даты нет текста. Формула будет выглядеть так:

формула

Здесь функции ПСТР() может возвратить до 255 знаков начиная от позиции слеша +1, а реально возвращает столько знаков сколько есть. Однако возвращает она, дату в текстовом формате. Для ее преобразования в числовой код Excel используется функция ДАТАЗНАЧ(), а чтобы совсем была похожа на дату надо ячейкам в столбце "D" задать формат даты.

рисунок2

Таким образом, используя достаточно несложные комбинации текстовых функций, мы смогли разделить исходный текст на требуемые нам части и привести их к необходимому формату для удобства сортировки данных. Думаю это успешное начало!