Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Microsoft Office и VBA > Microsoft Office Excel
Регистрация

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

Ответ
 
Опции темы
Старый 21.06.2018, 11:44   #1
netmaker
Новичок
 
Регистрация: 21.06.2018
Сообщений: 3
Репутация: 10
По умолчанию Макрос для вставки пропущенных дат за определённый период.

Здравствуйте, дорогие форумчане!
Есть отчет прихода на работу работников, в файле Example или сам собственно и отчёт. Для этого отчёта необходимо написать макрос который бы, вписывал строки с пропущенными датами, учитывая наименьшее и наибольшее число даты. Например, в файле примера наименьшее это 23/05/20018, а наибольшее 28/05/2018. И в определенном периоде все эти даты должны вписаться в отчёт. В файле Example есть два листа. Первый лист показывает то, что имеется в начале. Второй лист показывает то, что хотелось бы получить в результате работы макроса.
Заранее спасибо Вам друзья!!!
Вложения
Тип файла: xls Example.xls (39.5 Кб, 9 просмотров)
Тип файла: xlsx Отчёт.xlsx (550.3 Кб, 3 просмотров)

Последний раз редактировалось netmaker; 21.06.2018 в 11:47.
netmaker вне форума   Ответить с цитированием
Старый 21.06.2018, 12:06   #2
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,498
Репутация: 5308
По умолчанию

Цитата:
Сообщение от netmaker Посмотреть сообщение
Например, в файле примера наименьшее это 23/05/20018
и поэтому Вы первой же строкой на листе "Хочу получить" вставляете 22.05.2018 ?
а почему в листе "Хочу получить" для Name3 начинается c 25.05.2018 ? Там строчки с более ранними датами не нужны?
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 21.06.2018, 12:46   #3
netmaker
Новичок
 
Регистрация: 21.06.2018
Сообщений: 3
Репутация: 10
По умолчанию

22.05.2018 потому что это наименьшая дата в этом отчёте.
netmaker вне форума   Ответить с цитированием
Старый 21.06.2018, 12:50   #4
netmaker
Новичок
 
Регистрация: 21.06.2018
Сообщений: 3
Репутация: 10
По умолчанию

У меня есть макрос:
Код:

Sub InsRows()
    Dim i As Long, j As Long, k As Long, m As Long, n As Long
    Dim maDt As Long, miDt As Long, a(), b(), z, q
    Application.ScreenUpdating = False
    Set z = CreateObject("Scripting.Dictionary")
    i = Cells(Rows.Count, 1).End(xlUp).Row
    a = Range("A3:P" & i).Value
    miDt = Application.Min(Range("H3:H" & i))
    maDt = Application.Max(Range("H3:H" & i))
    For i = 1 To UBound(a, 1): z(a(i, 2)) = i: Next
    ReDim b(1 To z.Count * (maDt - miDt + 1), 1 To UBound(a, 2))
    For Each q In z.Items
        For j = miDt To maDt
            k = k + 1
            For m = 1 To 7
                b(k, m) = a(q, m)
                b(k, 8) = j
                For i = 1 To UBound(a, 1)
                    If a(i, 8) = j Then
                        If a(i, 2) = b(k, 2) Then
                            For n = 9 To 16: b(k, n) = a(i, n): Next
                            Exit For
    End If: End If: Next: Next: Next: Next
    [A3].Resize(UBound(b, 1), UBound(b, 2)).Value = b
End Sub

Но при выполнении макрос не обрабатывает отчёт.xlsx файл до конца. В связи с чем вопрос в чём причина?


_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 21.06.2018 в 13:59.
netmaker вне форума   Ответить с цитированием
Старый 22.06.2018, 09:02   #5
SAS888
Профессионал
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,152
Репутация: 1063
По умолчанию

Цитата:
макрос не обрабатывает отчёт.xlsx файл до конца. В связи с чем вопрос в чём причина?
Причина в том, что данный макрос для определения блока, в который требуется вставить недостающие строки, анализирует столбец "B".
В файле "Example" - три блока. Это "OTDEL 1", "OTDEL 2" и "OTDEL 3", для каждого из которых добавляются строки.
В файле "Отчет" у Вас есть совпадающие блоки. Например, "DOUBLING/TWISTI 2 SHIFT" встречается несколько раз (с различными AC-No.).
Укажите, как однозначно идентифицировать блок, в который требуется добавлять строки. Макрос будет другой.
__________________
Чем шире угол зрения, тем он тупее.
SAS888 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разбить период дат на массив Maxim360 Microsoft Office Access 2 18.05.2017 15:34
Макрос для вставки строки с копированием Viktorkv Microsoft Office Excel 2 30.11.2014 19:30
Макрос для вставки новой строки Maiku Microsoft Office Excel 6 15.03.2013 18:28
Макрос для вставки картинки из эксель КТатьяна Microsoft Office Excel 0 02.05.2011 12:46
[access]реализовать вывод отчёта продажи за определённый период времени nuevegramodelamor Фриланс 1 18.04.2011 09:50


14:41.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru