Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 05.12.2016
Сообщений: 86

Заполнение выходных дней

19.08.2019, 15:20. Показов 2560. Ответов 7

Студворк — интернет-сервис помощи студентам
Добрый день, коллеги)

Передо мной встала такая задача:
Есть таблица некоторой отчётностью с датами. Есть все даты, кроме выходных дней. Хотелось бы написать такой макрос, который с 01.04.2019 по сегодняшний день будет копировать данные с ближайшей слева пятницы в субботу и воскресение.

Спасибо большое заранее.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.08.2019, 15:20
Ответы с готовыми решениями:

Определить сколько выходных дней прошло между двумя датами
Определить сколько выходных дней прошло между двумя датами. Как определить кол-во всех дней между двумя датами я знаю...

Расчет выходных дней
Уважаемые форумчане, подскажите кто чем, как реализовать это в Access.Есть форма в ней 3 поля: поле1(начальная дата), поле2 (конечная...

Вычет выходных дней из DateTimePicker
Добрый день! На форме есть DateTimePicker и по умолчанию он выводит значение на день больше, чем сегодня this.dateTimePicker1.Value...

7
0 / 0 / 0
Регистрация: 05.12.2016
Сообщений: 86
19.08.2019, 15:31  [ТС]
Добавляю пример отчетности.
Хотелось бы, чтобы в таком же формате справа приписывались даты выходных дней с соответствующими данными с пятницы
Вложения
Тип файла: xlsx Task.xlsx (17.6 Кб, 8 просмотров)
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
20.08.2019, 17:43
Hikitosik, а что за сложности?
1.ищем пустой столбец по ячейке первой строки
2.копируем столбцы пятничного блока вместе с пустым столбцом блока и дважды вставляем.
3. заменяем в первом вставленном блоке пятничную дату + 1 день, во втором блоке +2
4.лучше это делать справа
1
0 / 0 / 0
Регистрация: 05.12.2016
Сообщений: 86
21.08.2019, 12:13  [ТС]
Это всё классно, уже попробовал реализовать. Всё можно сделать циклом, поскольку компаний константное количество. Даже формулу можно вывести

Но хотелось бы, чтобы это делалось каким-то алгоритмом, который будет искать дни, которые были пропущены, и далее вставлять данные с ближайшей слева заполненной даты. Просто интересно не само заполнение выходных, а любого пропущенного дня. Тут я уже в ступоре, как проверить на отсутствие и скопировать необходимые данные. Пока ни одной толковый мысли не пришло, кроме как копировать и вставлять вручную))))
0
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
21.08.2019, 16:20
Цитата Сообщение от Hikitosik Посмотреть сообщение
копировать и вставлять вручную
Что ж тоже вариант, только перед этим включить запись макроса, а после выполнения всех действий по копированию делаем Остановить запись. Получили макрос. Только вместо номера конкретного столбца ставите переменную, в которую вставляете индекс пустого столбца. А поиск пустой ячейки первой строки ну совсем просто - последовательной проверкой на космическую пустоту. В макрос вставляете добавление даты этого нового столбца на ещё 1 день.
0
0 / 0 / 0
Регистрация: 05.12.2016
Сообщений: 86
21.08.2019, 20:34  [ТС]
Наверно, мы друг друга не совсем понимаем)
В самой таблице явно не указано, какого дня нет. Просто идут даты: 01.02, 02.02, 05.02,...

Плюс проблема возникает в том, что таблица растёт в ширь. То есть необходимо будет приписывать справа к ней недостающие даты. Пока не осознал, как это правильно сделать
0
Часто онлайн
 Аватар для КостяФедореев
987 / 637 / 280
Регистрация: 09.01.2017
Сообщений: 2,080
22.08.2019, 00:07
Hikitosik, попробуйте
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub Макрос1()
Dim i As Date
Dim z, x, y As Long
z = z + 1
x = "01.04.2019"
segognya = "06.04.2019" 'Date
For i = x To segognya
    For y = 1 To 13
        If Cells(1, y + z) <> i Then
           Columns(y + z).Select
           Selection.Insert Shift:=xlToLeft, CopyOrigin:=xlFormatFromLeftOrAbove
           Columns(y + z).Select
           Selection.Insert Shift:=xlToLeft, CopyOrigin:=xlFormatFromLeftOrAbove
           Cells(1, y + z) = i
           Cells(2, y + z) = "Компания " & y
           If y = 13 Then
           Columns(y + z + 1).Select
           Selection.Insert Shift:=xlToLeft, CopyOrigin:=xlFormatFromLeftOrAbove
           End If
        End If
    Next y
    z = z + y
Next i
End Sub
Добавлено через 2 минуты
Hikitosik, в строке 6 можете изменить дату до которой нужно проверить или поставить значение Date и она всегда будет сегодняшнее число.

Добавлено через 8 минут
Hikitosik, кстати этот код добавляет только заголовки, если логику я правильно понял и сделал то что Вам нужно, то остальное прикрутить не сложно.
2
1847 / 1162 / 354
Регистрация: 11.07.2014
Сообщений: 4,107
22.08.2019, 05:10
Hikitosik, у вас там в примере идет пустой столбец, я ориентировался по нему. Если пропущена дата, то это тоже просто, проверяешь разницу дат и, если больше 1, то делаешь то, что я писал. Мне хотелось, чтобы вы попробовали сами справиться и помочь в случае чего. Но если КостяФедореев взялся, то он вам всё напишет без проблем и без обучения. Удачи.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.08.2019, 05:10
Помогаю со студенческими работами здесь

Автоматическое проставление выходных дней
Мне нужно чтобы в БД SQL автоматически проставлялись выходные дни &quot;В&quot;, и если в месяце меньше 31 дня, то лишние дни отмечались...

Не показывать данные выходных дней на графике
Создал график на matplotlib. И тут возникла опять эта невероятная нелепость. При увеличении видно, что есть данные, которых нет в...

Запрет выбора выходных дней в DatePicker
не могу написать событие, чтоб пользователь мог выбирать с текущей даты две недели и не мог выбирать выходные дни private void...

Учет выходных дней при назначении задач
Такая ситуация - пользователь назначает в Аксе задачи другим, выбирая тип и сложность. В зависимости от выбранного типа и сложности в...

Выбор даты без учета выходных дней
Коллеги, доброго дня. Помогите допилить скрипт по выбору даты из таблицы. В наличие есть объект, в котором хранятся даты за 2 месяца. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru