Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1 2 След.
RSS
Сформировать последовательность дат с пропуском суббот и воскресений, добавить пропущенные даты
 
Приветствую!

Прошу прощения если тема дублирует ранее созданную и прошу помощи в решении проблемы.
Есть исходник и его нужно отредактировать вставкой пропущенных дат.

Спасибо.
 
volbran, ознакомьтесь с правилами и предложите название темы, из которого будет понятна задача. - модераторы поменяют
 
volbran, иными словами, нужно сформировать последовательность дат от 01.01.1999 до  … с пропуском суббот и воскресений, так?
В A3
=A2+1+(WEEKDAY(A2;2)>4)*2
=A2+1+(ДЕНЬНЕД(A2;2)>4)*2

и тянуть 20 лет :-)
Изменено: БМВ - 11 Дек 2019 19:12:46
По вопросам из тем форума, личку не читаю.
 
Цитата
volbran написал:
я не силен в теме как прогер
а чтобы сформулировать так
Цитата
БМВ написал:
нужно сформировать последовательность дат от 01.01.1999 до  … с пропуском суббот и воскресений
нужно быть прогером?
 
Цитата
volbran написал:
нужно отредактировать вставкой пропущенных дат.
А зачем редактировать? Не проще сформировать и вставить новый диапазон (массив)?
 
vikttur, Юрий М, вы меня извините, я реально не в теме.
БМВ, сейчас формула работает, но все равно тянуть же  нужно)
Может есть другой способ?  
 
Цитата
Юрий М написал:
А зачем редактировать? Не проще сформировать и вставить новый диапазон (массив)?
Может и проще, как это сделать?
 
Цитата
volbran написал: формула работает, но все равно тянуть же  нужно)
Тянуть хоть и не 20 лет, но все равно долго. Можно за десяток секунд управиться.

Пишем формулу БМВ в ячейку А3.
Нужно размножить ее не меньше, чем на =20*365=7300 строк.

В поле адреса (левее поля для ввода формулы) вписать адрес ячейки - A7400. Enter. Выделена ячейка A7400.
Не снимая выделения жмем три клавиши - Ctrl+Shift+Стрелка_вверх. Выделен диапазон от ячейки с формулой до выбранной нижней.
Жмем две клавиши - Ctrl+D. Формула вставлена во все ячейки выделенного диапазона.
 
Спасибо, получилось!
Аж до 2027 года выкатило, с запасом, сгодится)
Благодарю!
 
Цитата
volbran написал:
как это сделать?
Например, так:
Код
Sub Macro1()
Dim DateStart As Date, DateFinish As Date, Arr, i As Long, x As Long
    DateStart = "01.01.1999"
    DateFinish = "18.09.2019"
    ReDim Arr(1 To DateFinish - DateStart, 1 To 1)
    For i = DateStart To DateFinish
        If Weekday(i, 2) < 6 Then
            x = x + 1
            Arr(x, 1) = Format(i, "dd.mm.yyyy")
        End If
    Next
    Range("B2").Resize(x, 1).Value = Arr
End Sub
 
Юрий М, что с этим делать, куда этот код нужно вставлять?
 
Цитата
куда этот код нужно вставлять?
В стандартный модуль и запустить
 
Прошу прощения, но что такое стандартный модуль, где он находится и как можно его запустить?
 
Посмотрите в приемах https://www.planetaexcel.ru/techniques/3/59/
 
volbran, а не достаточно ли вам будет просто протянуть ячейку и отметить - Заполнить по рабочим дням
 
artyrH,  спасибо, я опечатался выше >4 а не >5 исправил.
По вопросам из тем форума, личку не читаю.
 
Цитата
artyrH написал:
volbran , а не достаточно ли вам будет просто протянуть ячейку и отметить - Заполнить по рабочим дням
Долго же очень, на 4000 ячеек тянуть.
Хотя вчера так и делал, потому что по формуле БМВ и способом vikttur уже не получалось. Почему то на все ячейки шла одна дата.
А вот с формулой и модулем это для меня не подъемная задача)
 
Цитата
volbran написал:
уже не получалось
чему там не получаться? Потренируйтесь переходить на нужный адрес или как написал Виктор или через F5, выделению нужной области от нижней до верхней ячейки или наоборот и вставке формул.
По вопросам из тем форума, личку не читаю.
 
Если выделение необходимой области не получилось, то предложу вам вариант стандартной прогрессией.
Все про все 5 секунд.
 
Aleksey1107, забыли указать шаг 0 - приобретаем подписку 365  :D а вот после 5 сек
Изменено: БМВ - 11 Дек 2019 21:31:28
По вопросам из тем форума, личку не читаю.
 
БМВ, данная команда должна быть начиная с 2007, если верить данной статье.
Завтра на работе проверю на 2016 ;)  
 
Aleksey1107, Сорян, выглядит немного иначе, но работает.
По вопросам из тем форума, личку не читаю.
 
БМВ,
Даже в Excel 2003 есть такая возможность Правка -> Заполнить -> Прогрессия
 
Kuzmich, меня за смущало предельное значение, но оно тоже работает. В противном случае все равно тянуть , а это как раз и проблема ТС.
По вопросам из тем форума, личку не читаю.
 
Цитата
В противном случае все равно тянуть
Записываем в ячейку начальную дату, а в меню прогрессии конечную, шаг=1 и рабочие дни
и ничего тянуть не надо
 
Kuzmich,  я ж
Цитата
БМВ написал:
, но оно тоже работает.
я не внимательно глядел, а форма чуть иная
По вопросам из тем форума, личку не читаю.
 
БМВ,
В 2003 такая же, только на русском
 
Цитата
volbran написал:
А вот с <...> модулем это для меня не подъемная задач
1. Alt+F11
2. Меню Insert - Module
3. В открывшемся окне вставить скопированный с форума код.
4. Закрыть редактор или переключиться в Excel.
5. Alt+F8, в списке будет один макрос - Macro1, кнопка "Выполнить."
Если нужно, можно привязать к кнопке, которую нарисовать на листе. Как создать кнопку - можно почитать по ссылке в #14.
 
Цитата
Юрий М написал:
1. Alt+F11
2. Меню Insert - Module
3. В открывшемся окне вставить скопированный с форума код.
4. Закрыть редактор или переключиться в Excel.
5. Alt+F8, в списке будет один макрос - Macro1, кнопка "Выполнить."
Если нужно, можно привязать к кнопке, которую нарисовать на листе. Как создать кнопку - можно почитать по ссылке в #14.
Сделал как вы написали, даты вставились но не те.

"чему там не получаться?"
БМВ, в крайнюю ячейку курсор вставал, выделять столбец получалось, но по всему столбцу шла одна и та же дата.
EX.1.jpg (151.72 КБ)
 
Цитата
volbran написал:
даты вставились но не те.
Очень информативно.
И зачем Вы целиков повторили мой пост?
Страницы: 1 2 След.
Читают тему (гостей: 3)
Наверх