Subject: ОФФ: преобразование форматы даты m/d/yyyy в dd.mm.yyyy у меня док в Ворде, скопированный из Экселя, судя по всему.очень много дат в формате m/d/yyyy. как бы мне их НЕ вручную преобразовать в dd.mm.yyyy? копировала в Эксель, смотрела там свойства ячеек - что-то не получается.. к тому же некоторые даты оказались в Экселе в формате с точками, а не через слеш, хотя в Ворде все выглядят одинаково.. очень надеюсь на грамотный совет! (P.S. макросы писать (пока) не умею...) 2 |
Если Ворд умный (после 2003), то там должны быть, кажется, регексы. С их помощью можно переформатировать. Если есть индизайн, там это работает с полтыка. |
Ворд 2003. про Индизайн уже от Вас слышала, помню... :) думаю, что в Экселе можно, но не могу пока найти, как. |
Хороший повод научиться писать макросы. Выйдет быстрее и полезнее. Дело-то нехитрое. Их, собственно, и писать чаще всего не надо. делаете требуемую последовательность действий по перестановке и замене мышью и клавиатурой, Word ее запомнит. Назначаете макрос клавише. Ставите курсор перед нужным фрагментом, нажимаете, все готово, переходите к следующему. Если чуть побольше поработать, то можно сделать и автоматическое нахождение нужных фрагментов. |
PicaPica, попробовала сделать по Вашему рецепту. макрос записала, но перетаскивать в нем не получается, только удалять/писать поверх, поэтому некорректно выходит при переходе на след. месяц... да и хотелось бы автоматизировать, конечно. если не затруднит, пишите в личку, плиз; может, научусь :) |
в целом получилось, но есть одно большое НО: макрос привередливый, успех очень зависит от кол-ва цифр в рамках слеша, напр. 3/12/2010 10/20/2010 и 11/1/2010 -- это мне писать 3 разных макроса? главное, назначенные клавиши потом не перепутать :) нда... уж лучше вручную) 3 |
Все зависит от того, насколько Вы хотите разобраться в вопросе. Макросы, думаю, писать не обязательно. Лучше всего все операции по преобразованию дат выполнять в Excel. Нужно четко представлять, что в Excel данные в ячейке могут не восприниматься как календарная дата, а просто как текст, содержащий соответствующие цифры и разделители. Особенно часто такое происходит, когда происходит вставка чего-то из буфера в Excel. В общем, если операция вставки Вашего текста из Word в Excel Вам не кажется очень сложной, но тогда небольшими дополнительными усилиями можно заставить Excel снова распознать даты как даты, а затем очень простым приемом преобразовать их в другой формат даты. |
"заставить Excel снова распознать даты как даты" - ну, это я тоже пыталась - не получилось... причем не только у меня) хотя лично я с Экселем не очень дружу, признаюсь честно)) я пыталась даты сначала определить как англ. в свойствах ячейки и изменить их формат, а затем поставить русский, и надеялась, что тогда формат автоматически преобразуется. к тому же ячейки скопировались по-разному- часть со слешем, так они вообще никак не изменялись, часть - через точку... в общем, там надо было еще как-то каждую ячейку обновить, видимо, а вот что дальше, не понятно... alk, а хотите - вышлю Вам эти даты, попробуете, получится - расскажете, как :) |
Дарю 20 минут своего времени: (исходный формат: 3/12/2010, 10/20/2010 конечный формат : 12.3.2010, 20.10.2010) Sub date_change() При желании можно " г." после года вставлять. |
Предварительно создайте копию файла:) |
Еще важно: курсор должен быть в начале документа перед выполнением макроса. |
да мне-то как-то не интересно, я знаю, как это работает, ко мне часто пользователи обращаются с чем-то подобным. Думаю, Вам нужно попробовать сделать следующее. 1) нужно прежде всего в Excel добиться того, что текст, введенный в ячейку воспринимался как дата. Критерий простой - Вы форматируете ячейку (через Формат/Ячейка...) как ячейку с датой/временем. Если в ячейке уже введено что-то, то выбираете такой вариант форматирования, который соответствует написанному. После изменения форматирования нужно принудительно выполнить "редактирование" того, что там было введено. Достаточно просто нажать F2, чтобы начать редактирование, проверить, не вставлено ли в ячейку что-то помимо текста с датой, удалить, если вставлено, нажать Enter, чтобы завершить и сохранить редактирование. Если все правильно сделано, то Excel начнет дату считать датой, и с этой ячейкой можно будет проделывать любые изменения через Формат/Ячейка..., представляя дату как угодно. 2) Чтобы не мучиться так со всеми ячейками по отдельности, особенно если в них ничего менять реально не надо, предусмотрен более быстрый механизм преобразования. Если у Вас получится пункт 1, я сообщу, как можно быстро обновить другие ячейки без индивидуального захода в каждую. |
alk, да, все ячейки считаются датой. правда, одни написаны как 11.12.2010, а другие - как 12/11/2010. это нужно унифицировать? у меня не получилось... AVPro, спасибо! но, чтобы применить Ваш вариант, мне нужно проконсультироваться со специалистами)) |
Только предупредите специалистов, что All rights reserved, protected by law, без разрешения автора и т.д.:) |
проблема в том, что в ячейках со слешем невозможно изменить формат даты через Формат --Ячейки. он меняется только в ячейках с точками.. почему - понятия не имею. иначе бы всё было просто... |
а заменить слеш на точку большая проблема :) |
нажмите на такую ячейку (где формат не меняется) и в строке формул надеюсь Вы знаете, что это) посмотрите, нет ли перед датой символа ' |
в Экселе 1) выделить все ячейки с датами 2) Ctrl+1 3) Язык (местоположение) - Русский 4) выбрать Дата - 14.03.2001 (первая строка) 5) ОК 6) Ctrl+C в Ворде 7) Ctrl+V |
То, что записывается в ячейке, если Excel уже считает это датой, зависит только от того, как эта конкретная ячейка отформатирована в Формат/Ячейка/Число... Для ячеек, которые уже считаются датой, там будет выбран тот или иной вариант ее представления. Никто не мешает для одной ячейки выбрать представление даты в формате чч.мм.гггг, а для другой - мм/чч/гг. Но если ячейки даже отформатированы по-разному, и у них внутри даты, то можно просто выделить диапазон и установить для всех ячеек тот формат, который требуется. Они все сразу станут одинаково отформатированы. Еще раз подчеркиваю - если их содержимое действительно считается Excel'ем календарной датой. В противном случае, когда содержимое воспринимается как текст, номер с форматированием не пройдет. Я считаю, что использовать для такой простой операции макросы - из пушки по воробьям. Нужно просто чуть лучше ориентироваться в Excel'е и макросы не понадобятся, вернее, понадобятся дял более серьезных вещей. |
уважаемые ответившие! очень благодарна всем за внимание к моей проблеме, но, похоже, вы меня не слышите :) вне зависимости от того, что я делаю и меняю ли слеш на точку, ячейки со слешем НЕ МЕНЯЮТ СВОЙ ФОРМАТ (сорри за капс), когда поступаю так, как описывает alk. AVPro - нет, никакого символа там нету. всем особо заинтересованным с радостью вышлю сабж для научных экспериментов (хм, а, может, он заколдован?) |
т.е. все советы безусловно полезны и наверняка верны, просто у меня какой-то глюкнутый файл, и именно к нему (вернее, к его части) они абсолютно неприменимы. а жаль... |
Ок, вышлите мне Ваш файл по почте, я посмотрю и напишу здесь, что там было не так |
alk, выслала на alk@inbox.ru |
либо защита стоит на ячейках, либо слэши не в ту сторону, либо какие-нибудь еще символы (пробелы?) есть там, где их быть не должно... |
посмотрел, получилось, завтра напишу подробно, что нужно сделать |
eu_br, защита была, я ее сняла - никакого эффекта... слеши в ту сторону. я их меняла на точки (см. выше) - не помогло. пробелов и пр. нету (разве что как-то хитро скрыты). alk, спасибо! |
Итак, проблема Excel'я в том, что недостаточно только в нем поменять региональные установки, чтобы он начал правильно "глотать" различные форматы представления даты и времени. В Excel 97 было сделано тупо, но честно. Там при форматировании ячейки в разделе Дата отсутствовал этот сбивающий с толку выпадающий список с языками. Нужно было идти в Панель управления системы и в "Язык и региональные установки" менять язык на Английский (США), а формат даты на mm/dd/yyyy, чтобы тут же в Excel все перечиталось и стало восприниматься как следует. В Excel 2003 дергать приходится уже в двух местах. Почему? Потому в самом Excel выбор языка при форматировании ячейки не позволяет сменить представление с dd.mm.yyyy на mm/dd/yyyy - там просто нет такого варианта. Все равно придется идти в региональные установки системы, временно менять их на English (USA) c форматом даты mm/dd/yyyy, нажимать там кнопку Применить нужное количество раз. Затем в Excel нужно выполнить хитрую команду - выделить столбец с датами, потому выбрать в меню Данные пункт Текст по столбцам..., а затем в открывшемся окне, ничего там не меняя, сразу нажать кнопку Готово. Это как раз позволит избавиться от всяких ' в начале строк и заставит Excel перечитать данные в выделенном столбце так, чтобы они воспринялись как календарные даты. Все до этого мертвые ячейки с 10/15/2010 или 11/05/2010 оживут и станут ячейками с датами в формате mm/dd/yyyy, как мы установили в Региональных установках системы. Если это не произошло, можно сходить в Формат/Ячейки/Число и посмотреть, выбран ли для выделенных ячеек вариант Дата и Язык Английский (США). Теперь опять нужно топать в Региональные установки и поменять их на Русский, с форматом представления Даты дд.мм.гггг и не забыть нажать там Применить нужное количество раз. Теперь осталось только в Excel для нашего выделенного столбца сходить в Формат/Ячейки/Число и выбрать Дата и язык Русский. Все ячейки преобразуются в нужный формат. Теперь там, где было 10/15/2010 станет 15.10.2010 и т.д. |
alk, спасибо за подробное пояснение! так всё работает, но... теперь уже ранее "живые" ячейки перевернулись наоборот %-) в общем, кончаю я возиться с этим документом. надеюсь, что эта ветка пригодится тем, кто впоследствии столкнётся с такой же проблемой, и поможет им. |
... в итоге таки получилось после ряда манипуляций)) еще раз всем огромное thanks и удачи в работе! |
You need to be logged in to post in the forum |