Страницы: 1
RSS
Изменение формата и текста
 
Пришел файл, в одном столбце все ячейки имеют разный формат. В этом столбце занесена дата в одних ячейках - 010879 (текстовый формат), а в других 01.08.1979 (формат даты). Даты все естественно разные. Файл большой, более 2000 строк. ВОПРОС:  
Как можно быстро отформатировать весь столбец и привести к такому виду 010879?  (формулой или VBA, мне все равно).  
Спасибо.
 
=ЕСИЛИ(Т(А1)="";ЗНАЧЕН(ТЕКСТ(А1;"ДДММГГ"));А1)  
вот только надо сначала отличить
 
{quote}{login=Лузер}{date=24.01.2008 04:44}{thema=}{post}=ЕСИЛИ(Т(А1)="";ЗНАЧЕН(ТЕКСТ(А1;"ДДММГГ"));А1)  
вот только надо сначала отличить{/post}{/quote}бред написал  
=ЕСЛИ(Т(А1)="";ЗНАЧЕН(ТЕКСТ(А1;"ДДММГГ"));А1)  
вот так правильно
 
{quote}{login=Лузер}{date=24.01.2008 04:46}{thema=Re: }{post}{quote}{login=Лузер}{date=24.01.2008 04:44}{thema=}{post}=ЕСИЛИ(Т(А1)="";ЗНАЧЕН(ТЕКСТ(А1;"ДДММГГ"));А1)  
вот только надо сначала отличить{/post}{/quote}бред написал  
=ЕСЛИ(Т(А1)="";ЗНАЧЕН(ТЕКСТ(А1;"ДДММГГ"));А1)  
вот так правильно{/post}{/quote}опять поторопился :)    
ЗНАЧЕН не нужно  
=ЕСЛИ(Т(A1)="";ТЕКСТ(A1;"ДДММГГ");A1)
 
Лузер, огромное спасибо!  
Получается отлично (если записывать в новый столбец), а в существующем столбце с уже имеющимися данныы? Может я что-то делаю не так? Если эту формулу я напишу на VBA, тогда, наверно, можно отредактировать данный столбец?
 
{quote}{login=Starik}{date=24.01.2008 04:30}{thema=Изменение формата и текста}{post}Пришел файл, в одном столбце все ячейки имеют разный формат. В этом столбце занесена дата в одних ячейках - 010879 (текстовый формат), а в других 01.08.1979 (формат даты). Даты все естественно разные. Файл большой, более 2000 строк. ВОПРОС:  
Как можно быстро отформатировать весь столбец и привести к такому виду 010879?  (формулой или VBA, мне все равно).  
Спасибо.{/post}{/quote}
 
Незнаю почему, но у меня оба варианта работают наполовину на основе файла выложенного Виталием.  
Формула от Лузера не пошла в лоб на форматах даты 01.12.2007    
и отлично отработала по тексту 011107. При этом откуда косяк не понятно. Простое задание формата диапазону не помогло, нужно было обновить значение ячейки.  
Макрос Виталия не справился на тексте, как только дата начинается с нуля 011207, то нолик теряется.
 
{quote}{login=Igor67}{date=24.01.2008 08:24}{thema=}{post}Незнаю почему, но у меня оба варианта работают наполовину на основе файла выложенного Виталием.  
Формула от Лузера не пошла в лоб на форматах даты 01.12.2007    
и отлично отработала по тексту 011107. При этом откуда косяк не понятно. Простое задание формата диапазону не помогло, нужно было обновить значение ячейки.  
Макрос Виталия не справился на тексте, как только дата начинается с нуля 011207, то нолик теряется.{/post}{/quote}Внимательнее к условиям задачи. Starik смог всем воспользоваться.  
Итак, условия: дата 01.12.2007 в формате даты (!), текст 011207 в формате текста. Если 01.12.2007 в текстовом формате, то и формула не работает.  
Макрос, упомянутый, работает с исх. данными как с текстом, да и в примере они тоже текст, зато соседний стобец в формате "общий" и ёксель преобразует вставленные данные в число - первый нолик теряется. Кроме того, макрос не учитывает условие двузначного года.  
Starik, подрихтовал код Виталия:  
Sub q()  
 Dim i As Long  
 Application.ScreenUpdating = False  
 For i = 1 To Cells(1, 1).End(xlDown).Row  
     If IsDate(Cells(i, 1).Value) Then Cells(i, 1).Value = Format(Cells(i, 1).Value, "ddmmyy")  
 Next i  
 Application.ScreenUpdating = True  
End Sub
 
Виталий! Совет: когда переменная планируется в качестве номера строки, типа Integer может не хватить - integer variables stored as 2-byte whole numbers in the range -32,768 to 32,767. А строк в два раза больше в 2003, не говоря уж про 2007-й :)  
Поэтому я написал Dim i As Long
 
Условие прочитал, дописать не дали - прогнали с компа.  
Как задача поставлена, так и решена.    
Но есть  нюанс, пользователь знает что в поле вводится дата, на экране все отображается как "надо", а Excel не считает.    
Это могло возникнуть и у Старика, если у него данные выгружены из базы данных.  
А на 2000 строк эксперементировать с переводом данных по форматам даты - можно получить ...
 
Привет!  
Мужики, у меня было очень мало времени, поэтому я сделал проще, по формуле Лузера. В отдельном столбце прописал формулу и растянул ее на 2000 строк, полученный результат скопировал в нужный столбец. Быстро и дешево.  
Еще раз спасибо.
Страницы: 1
Читают тему
Наверх