Страницы: 1
RSS
корректировка "корявых" дат в ячейках
 
День добрый! пошатался по поиску но пока своего решения не нашел, расскажу по порядку,каждый месяц мне приходится делать сл.работу, есть база данных в которой присутствует таблица DBF, назовем её 1, каждый месяц мне приносят обновление для этой базы, причем эти обновления в Word, мне приходится каждый раз делать следующее, из всех файлов Word я копирую таблицы в Excel, естественно что ФИО и дата рождения при копировании становятся как хотят, я вручную расставляю эти данные по столбцам, причем там где ФИО в одной ячейки я разбиваю на три, в принципе с этим я приловчился, есть другая проблема, даты  в Word забиваются как попало, т.е там может быть вместо точек и пробелы и запятые (сними справиться не трудно), меня интересует как можно допустим с помощью макросов изменить даты такие как "15.071992" или "15.07.1992." или так "1507.1992". Сам я макросы никогда не писал, поэтому прошу помощи у Вас, потому как список этих обновление всегда большой не менее 25-30 тыщь строк, добрая половина из которых содержит эти корявые даты. Надавать по шапке за такое заполнение не представляется возможным т.к. это другая организация да и списки со все области. Если такая тема уже была то прошу ткунть носом, а не бить по шапке. Заранее спасибо
 
Пример с куском набора корявых дат в студию
 
Олег Helgi, у Вас плохой например:( А возможны написания 121999 т.е., дата и месяц не по 2 цифры? или наоборот лишнии цифры?
 
на счет примера имеется ввиду что где-то в конце стоит точка, где-то в середине её не хватает и т.д.
 
С Вашим примером справиться легко - сперва убиваем заменой на пусто все возможные разделители, затем из 15071992 делаем дату нужного вида.
 
сделал так, правка-заменить, точки на "ничего" получилось 15071992, а потом как? если ставлю формат дата то в ячейке "##########"
 
=ПСТР(ПОДСТАВИТЬ(E2;".";"");1;2)&"."&ПСТР(ПОДСТАВИТЬ(E2;".";"");3;2)&"."&ПСТР(ПОДСТАВИТЬ(E2;".";"");5;4)  
 
Здесь дата будет как текст. Если потом дата нужна для сводных или в других расчётах, то  
=--(ПСТР(ПОДСТАВИТЬ(E2;".";"");1;2)&"."&ПСТР(ПОДСТАВИТЬ(E2;".";"");3;2)&"."&ПСТР(ПОДСТАВИТЬ(E2;".";"");5;4)) и формат ячеек - дата.
 
А дальше идем в приемы:  
http://www.planetaexcel.ru/tip.php?aid=104  
Вот читали бы правила, пользовались поиском... Для кого это люди старались...
Я сам - дурнее всякого примера! ...
 
Или например так:  
 
Sub tt()  
Dim cc As Range, ss$  
For Each cc In [e2:e9]
ss = Replace(Replace(cc.Value, ".", ""), " ", "")  
cc.Value = DateSerial(Mid(ss, 5, 4), Mid(ss, 3, 2), Left(ss, 2))  
Next  
End Sub
 
БОЛЬШОЕ СПАСИБО!!!!  
получилось, Hugo и Михаил С. вы меня выручили, теперь не нужно будет сидеть целый день завтра с этими датами. :)))
Страницы: 1
Наверх