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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2017, 11:03   #1
Ovsjano4ka
Новичок
Джуниор
 
Регистрация: 20.01.2017
Сообщений: 3
По умолчанию Преобразование чисел в дату (MS Excel)

Добрый день!
Столкнулась с проблемой - список из 7991 строк, в эксельке, в которых неверно проставлены даты. То есть мне нужно, что бы в ячейке было(к примеру) 01.01.2001, а там 20010101 и ячейка в текстовом формате. Мне нужна ячейка с датой в правильном формате) Помогите, пожалуйста

Последний раз редактировалось Ovsjano4ka; 20.01.2017 в 11:24.
Ovsjano4ka вне форума Ответить с цитированием
Старый 20.01.2017, 11:21   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Стесняюсь спросить - какой язык программирования подразумевается. Или ёксель ?
И что изменится, если там не 7991 строк, а 100500? Функция преобразования будет одна. Я так думаю.
digitalis вне форума Ответить с цитированием
Старый 20.01.2017, 11:24   #3
Ovsjano4ka
Новичок
Джуниор
 
Регистрация: 20.01.2017
Сообщений: 3
По умолчанию

Это в эксель, и количество строк - совсем не важно.
Просто хотелось обозначить, что нужно преобразовать много ячеек, не парочку. Пробовала "подставить", но так как числа (текст, точнее) в ячейках разный - способ не подходит
Ovsjano4ka вне форума Ответить с цитированием
Старый 20.01.2017, 11:26   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Ну раз ёксель, то х.з., а на паскале это одна строчка кода.
digitalis вне форума Ответить с цитированием
Старый 20.01.2017, 11:29   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А что значит не верно? Там везде в виде 20010101 или есть и 2001-01-01, и 01012001, и прочее как придется? Или такое - 20173030?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.01.2017, 11:33   #6
Ovsjano4ka
Новичок
Джуниор
 
Регистрация: 20.01.2017
Сообщений: 3
По умолчанию

просто мне нужно - что бы были именно даты с именно 01.01.2001 а не текст 20010101. перебивать в ручную очень тяжко)
вообще, глобально, мне необходимо отфильтровать таблицу по датам рождения. а с этими 20010101 это занимает много времени. вся таблица у меня на 32 тыщи строк, и из них вот эти 7991 - с неверно вписанными датами
Ovsjano4ka вне форума Ответить с цитированием
Старый 20.01.2017, 11:54   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Овсяночка, предлагаю такой вариант ("ручной").

1) рядом со стобцом, где 20010101 создаём ещё один пустой столбец (или берём любой свободный)

2) в ячейку этого свободного столбца вписываем формулу
Код:
=ДАТА(ПСТР(A1;1;4); ПСТР(A1;5;2); ПСТР(A1;7;2))
вместо A1 должна быть ваша ячейка


3) протягиваем формулу до конца столбца (где кончаются данные в исходном столбце


4) после того, как убедились, что в этом столбце то, что надо,
выделяем его, нажимаем "Копировать"
переходим в исходный столбец, (это та, где текст вида 20010101), нажимаем Пр.Кнопка.Мышки - Специальная вставка - Значения.

5) исходный столбец выделить, задать ему формат ячеек "Дата"

6) удаляем дополнительный столбец (там будет уже ошибка "#ЗНАЧ!")

готово. задача решена.

p.s. можно вместо этого использовать макрос, если знаете, что такое макросы и не боитесь их использовать!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.01.2017, 12:30   #8
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
p.s. можно вместо этого использовать макрос, если знаете, что такое макросы и не боитесь их использовать!
может и костыль но все же UDF
Код:
Function onlyNum$(rng As Range)
With CreateObject("VBScript.RegExp")
.Global = True: .IgnoreCase = True: .MultiLine = True: .Pattern = "\D+"
onlyNum = .Replace(rng.Value, "")
onlyNum = Mid(onlyNum, 1, 4) & "-" & Mid(onlyNum, 5, 2) & "-" & Mid(onlyNum, 7, 2)
End With
End Function
p.s.
как по мне, то "помощь" по вопросах екселя, без исходного файла извращения, или же мой скил угадывать что надо сделать с какими данными недостаточно прокачан
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 20.01.2017 в 12:33.
Aleksandr H. вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование текста в ячейке в дату LGM Microsoft Office Excel 5 10.07.2013 16:53
Преобразование текст. формата в дату oleg_sh Microsoft Office Excel 8 07.10.2011 18:15
Преобразование Int32 в Дату Dr.Pauliss Помощь студентам 1 27.05.2011 07:28
Преобразование строки формата YYYY-MM-DD в дату, Варнинги! XerSon Общие вопросы Delphi 2 25.10.2010 09:19
преобразование дАтЫ в дату suxo Microsoft Office Excel 7 01.06.2010 10:10