Обработка данных РЗН
Думаю, проблема обработки данных РЗН будет интересна всем, кто так или иначе связан с реализацией лекарственных средств.
История вопроса.С начала февраля 2010 года началась регистрация цен на жизненно необходимые и важнейшие лекарственные средства. Регистрацию проводит Росздравнадзор РФ. На начало мая 2010 года уже зарегистрировано 6281 наименование. Естественно что такой объем данных крайне проблематично обрабатывать в ручную. Хочется создать некое подобие базы данных, которую потом использовать в качестве опорно-справочной информации для работы самых разных бухгалтерских и складских программ. Первый шаг на этом пути - получение указанных данных в формате Excel (о DBF мы даже и не мечтаем). Видимо народные чаяния дошли до ушей наших чиновников и где то с начала марта они стали публиковать вместе с приказом в формате PDF и файл Excel с данными регистрации*. Вот счастье-то какое, но радоваться оказалось рано! Дело в том что в файле Excel цены проставлены в текстовом формате и никаким образом математические операции делать с ними нельзя. Учитывая, что там бывает до 800 строк записей, в голове начала бродить мысль как автоматизировать процесс преобразования "текстовых" цен в "числовые" и свести затраты человеко/часов к минимуму.
И так, рассмотрим решение проблемы на реальном примере.
Берем последний приказ РЗН № 3572 от 29.04.2010 года. Там в приложении есть файл 3572.xls с табличкой на 104 строки. Привожу фрагмент содержимого

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

Жмем "Заменить все" и получаем результат.

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

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

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

Для тех, кто уже "набил руку" в Excel, не составит труда объединить все вышеописанные шаги в одну формулу, см. строку формул на рисунке.

Не могу удержаться от еще одного "камня" адрес наших чиновников. В приведенном примере цены на препараты проставлены как рублях так и в долларах США, а еще там есть евро. Сразу возникает вопрос, а по какому курсу пересчитывать цену в рубли. На это наши чиновники очень важно отвечают: "Надо пересчитывать по курсу на день пересечения препаратом границы Российской Федерации"?!!. И вот тут полный ступор. Откуда бедная адыгейская аптека, находящаяся в ауле Блечепсин и имеющая одну штатную единицу во всех должностях сразу, может получить эту информацию. А чиновники опять отвечают "А вы уточните у поставщика". Поставщик на такие вопросы дать ответ тоже не может т.к. он далеко не единственный в цепочке, да и вообще это "коммерческая тайна". Может все-таки было бы проще поднапрячься нашему Российскому здравнадзору и самому пересчитать цену в рубли для конечного исполнителя, уж они то могут узнать, когда препарат был ввезен на территорию Российской Федерации, а не узнают, своя рука владыка, изобретут какой-нибудь другой критерий. Всем сразу станет легче!
Файл с приведенными выше формулами можно скачать для примера. Желаю всем успехов в преодолении последствий непрофессионализма вышестоящих чиновников!!!
* Прим. автора: Информация по состоянию на 2010 год. С тех пор многое изменилось в лучшую сторону