Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 18.01.2009, 17:52   #1
Marvel
Пользователь
 
Регистрация: 18.01.2009
Сообщений: 11
По умолчанию Преобразовать в дату

Приветствую Всех, нужна Ваша помошь.
Суть в следующем: есть прайс-листы в них есть графа срок годности, но
разные поставщики ее пишут по разному, примеры:
01.01.10 - нормально
10.05.2010 - нормально
04.10 - только месяц и год
0512 - только месяц и год
11210 - распозновать как 01.12.2010
62610 - распозновать как 26.06.2010 (т.к. 26 месяца нету)
Нужно соответсвенно правильно распознать и привести к виду ДД.ММ.ГГГГ
Если дата как в 3,4 примере значит надо дописать 01 к месяцу и году, т.е. к виду 01.04.2010, 01.05.2012

Последний раз редактировалось Marvel; 18.01.2009 в 17:59.
Marvel вне форума
Старый 18.01.2009, 17:59   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
0512 - только месяц и год
11210 - распозновать как 01.12.2010
62610 - распозновать как 26.06.2010 (т.к. 26 месяца нету)
Преобразовать такое в нормальный вид, как мне кажется, можно только при помощи макросов - Excel сам вряд ли с этим справится...

Но не проще ли искоренить причину проблемы, нежели бороться с её следствием?

В Вашем прайс-листе назначьте список допустимых значений для этого поля, предварительно назначив ячейке формат "Дата"



--------- вдруг кому пригодится --------------

На сайте ExcelVBA.ru можно скачать универсальную программу обработки прайс-листов:
http://excelvba.ru/programmes/Unification
которая умеет распознавать даты, в каком бы виде они не были написаны.


Цитата:
Программа «Прайс лист», выполненная в виде надстройки для Excel, позволяет вам нажатием одной кнопки преобразовать множество прайс-листов различных форматов к единому виду.
Программа умеет объединять данные из самых разных прайсов (формата CSV и Excel), в том числе из файлов иерархической структуры (выгрузки из 1С).

Возможностей в программе множество — например, она умеет делать наценку (в т.ч. и «сложную»), конвертировать цены из одной валюты в другую, выполнять замены наименований, выделять нужные данные (характеристики) из описания товара при помощи специальных функций.

Создавать итоговый прайс можно в формате Excel (по шаблону XLS) или в CSV (разделители столбцов, кодировка, и всё такое - настраивается)

Вы легко сможете настроить программу обработки прайс-листов под свои нужды.
Если сами не разберётесь — позвоните в Скайп (ник: ExcelVBA.ru), — получите бесплатную консультацию, с демонстрацией возможностей программы.

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

Обновления к программе «Прайс-лист» выходят регулярно, — соответственно, в программу постоянно добавляются новые возможности.

Последний раз редактировалось EducatedFool; 24.02.2013 в 12:47.
EducatedFool вне форума
Старый 18.01.2009, 18:09   #3
Marvel
Пользователь
 
Регистрация: 18.01.2009
Сообщений: 11
По умолчанию

На макросы я и расчитываю... т.к. ручками перелопатить каждый прайс не реально.
Источник проблемы в том, что прайсы формируются в 1С-ке, номенклатура которой забита уже давно и давно не редактировалась, если только не новые позиции (сфера медикаменты)
Если меняем формат ячейки в "Дата" то меняется ее содержимое, точно не не помню, но точно не в формат "Дата"
Вижу решение только в написании макроса, который распознает где дата, где месяц, где год и преобразует ее в значение (можно текстовое) 01.01.2010 (на пример)
Marvel вне форума
Старый 18.01.2009, 18:17   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Макрос-то написать можно, но, учитывая "разнообразие форматов даты" в Вашем файле, не факт, что удастся всё предусмотреть...

Пока попробуйте такой вариант решения проблемы (см. вложение)
Изменить значения в зелененьких ячейках на листе так просто не получится.
Единственная возможность - выполнив двойной щелчок на ячейке, выбрать дату из появляющегося календарика:

Вложения
Тип файла: rar ввод даты в ячейку.rar (24.9 Кб, 71 просмотров)
EducatedFool вне форума
Старый 19.01.2009, 07:03   #5
Marvel
Пользователь
 
Регистрация: 18.01.2009
Сообщений: 11
По умолчанию

Вот примеры прайс-листов в которых надо привести столбец Срок годности к нормальному виду ДД.ММ.ГГГГ
Вложения
Тип файла: rar Прайс-лист.rar (9.0 Кб, 21 просмотров)
Тип файла: rar Прайс-лист1.rar (5.5 Кб, 15 просмотров)
Marvel вне форума
Старый 19.01.2009, 15:48   #6
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

EducatedFool, крутой календарь, Спасибо!
Maxx вне форума
Старый 19.01.2009, 17:56   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
EducatedFool, крутой календарь
Это не мой календарь

Нашел на соседнем форуме в этой теме.
Автор - Avsha

Правда, чуточку переделал под свои нужды.
Если запустить поиск по слову календарь в разделах по VBA, можно найти множество интересных реализаций.
Мне больше других понравился именно этот календарик - так как он выполнен с использованием только стандартных элементов управления.

Последний раз редактировалось EducatedFool; 19.01.2009 в 17:58.
EducatedFool вне форума
Старый 21.01.2009, 06:49   #8
Marvel
Пользователь
 
Регистрация: 18.01.2009
Сообщений: 11
По умолчанию

Народ, тут кто-нибудь поможет мне?
Marvel вне форума
Старый 21.01.2009, 07:29   #9
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Если Вы оговорите все возможные варианты, тогда поможем.
Давайте рассуждать: в файле "Прайс-лист1", вроде бы, все понятно. Здесь, по видимому, введены месяц и год, разделенные запятой (так?). Но это только один вариант. В файле "Прайс-лист" не все ясно. Вы говорили, что
Цитата:
62610 - распозновать как 26.06.2010 (т.к. 26 месяца нету)
А если, например, 10 411 (первое значение в файле "Прайс-лист") - это 10.04.2011, или это 04.10.2011 ? Ведь 4 и 10 бывают и число месяца и месяц года. Как быть?
Давайте так: напишите два столбца соответствия всех возможных вариантов. Как в принципе может быть введена дата, и как это нужно интерпретировать.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 21.01.2009, 08:00   #10
Marvel
Пользователь
 
Регистрация: 18.01.2009
Сообщений: 11
По умолчанию

Поиск по месяцу я имел в виду следующие действия:
Можно же пройтись по столбцу дата с определением месяца?
Т.е. проверить весь список дат и из них сделать вывод в каком месте у нас месяц. Ну зная месяц можно уже дальше двигаться с определением даты и года.
Сейчас просчитаю все возможных варианты и выложу чуть позже.
Marvel вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразовать текст в числовой olimpus Microsoft Office Excel 17 12.11.2008 07:58
Как преобразовать код SeRhy HTML и CSS 1 17.08.2008 15:50
Как преобразовать типы NeiL Общие вопросы C/C++ 1 31.05.2008 14:43
Преобразовать форму в ссылку Pekc HTML и CSS 1 06.12.2007 20:10
ПРЕОБРАЗОВАТЬ malevich Общие вопросы Delphi 1 07.12.2006 21:08