![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 17.01.2011
Сообщений: 26
|
![]()
Добрый день!
Решаю следующую задачу: есть первая колонка с датой (ДД, ММ, ГГГГ, ЧЧ,ММ,СС,), значения которой нужно перевести в вид W xx Y xx (W - просто буква означающую "неделю", xx - номер (вычисляется), Y - год, хх - вычисляется. Нашел 2 решения: 1. Просто (макрорекодер) Код:
Код:
Второй вариант предпочтительнее, как с точки зрения логики, так и процесса. Проблема в том, что я не могу понять почему второй вариант протекает целые минуты (очень долго), когда первый (не смотря на свою топорность) делает это мгновенно? Подскажите пожалуйста =) Последний раз редактировалось Richard123; 03.03.2011 в 12:43. |
![]() |
![]() |
![]() |
#2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
предполагаю из-за количества прорисовок экрана
поставте перед циклом Application.ScreenUpdating = False после Application.ScreenUpdating = True это подтвердит или опровергнет мои педположения.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
#3 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]() Цитата:
а выглядеть он будет так: 1) в переменную RA типа RANGE заносим в цикле все ячейки из первого столбца, в которых есть дата 2) в диапазон на 2 столбца правее - RA.offset(,2) - одной строкой кода записывается формула: RA.offset(,2).FormulaR1C1 = "=IF(RC[-2]>0,""W""&WEEKNUM(RC[-2],2)&"" Y""&(YEAR(RC[-2])-2000),"""")" PS: Вообще, есть более быстрые и оптимальные варианты решения. Но, не увидев вашего файла, сложно что-либо посоветовать |
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 17.01.2011
Сообщений: 26
|
![]()
Файл этой задачи там очень простой:
Есть 1 столбец ("A:A") в котором есть даты. Выглядит он так: Код:
Можете показать как должен выглядеть код? |
![]() |
![]() |
![]() |
#5 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
А мы сейчас должны гадать, в каком формате даты находятся в ячейке - вдруг они так как текст сохранены?
Есть ли среди дат пустые ячейки? Я же написал: Цитата:
|
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 17.01.2011
Сообщений: 26
|
![]()
Извиняюсь, вот файл.
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 21.11.2010
Сообщений: 326
|
![]()
может так подойдет (одной строчкой):
Код:
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 17.01.2011
Сообщений: 26
|
![]()
Спасибо всем большое!
Последний код работает, даже при условии что могут быть пустые ячейки) Уважаемый MCH, не могли бы оказать такую любезность как описать работу кода. Я понимаю что скорее всего вопрос может быть глупым, но в голове пока ещё не сложилось четкое понимание "составного" диапазона ( когда Range состоит из Cells с Row.Count). |
![]() |
![]() |
![]() |
#9 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
Range Вы можете описать как (НачальнаяЯчейка, [КонечнаяЯчейка]), где начальная и конечная ячейки любые синтаксически корректные ссылки на ячейки. если конечная ячейка пропущена значит указан диапазон состоящий из одной ячейки.
в качестве первого параметра еще может выступать строка, описывающая диапазон, например "А3" ячейка А3, "С2:Е100" диапазон, "1:10" 10 первых строк.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 17.01.2011
Сообщений: 26
|
![]()
Благодарю Вас, за разъяснения. Теперь стало более понятно.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? | Anarki | Общие вопросы C/C++ | 3 | 13.11.2009 19:23 |
Компутер тормозит :( | Utkin | Компьютерное железо | 9 | 24.10.2009 13:54 |
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) | Mr.User | Помощь студентам | 9 | 23.11.2007 01:34 |