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

Купить рекламу на форуме 15-35 тыс рублей в месяц

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2022, 18:08   #1
MrGrifff
Новичок
Джуниор
 
Регистрация: 02.08.2022
Сообщений: 5
Восклицание Помогите, Нужно зациклить функцию

Не знаю как написать код к отчету, мне нужно, что бы у каждой строки с ФИО было добавлено 30 пустых строк для дальнейшего их заполнения
На против ФИО можно увидеть суммы, они должны быть расположены вертикально, от строчки с ФИО до строчки с датой 31.7.2022. Некоторые суммы отсутствуют потому в этот день не было покупки
Суммы должны соответствовать дате (Столбец C = 1.7.2022 : AG = 31.7.2022)


Молю вас, помогите пожалуйста!!!!!!!!:confus ed:
Вложения
Тип файла: xlsx OLAP Отчет по продажам 01.08.2022 21.36.40.xlsx (564.9 Кб, 4 просмотров)
MrGrifff вне форума Ответить с цитированием
Старый 02.08.2022, 21:22   #2
Elixi
Форумчанин
 
Регистрация: 10.05.2019
Сообщений: 140
По умолчанию

попробуйте
Код:
Sub Otchet()
'   Для файла, который вы выложили: "OLAP Отчет по продажам 01.08.2022 21.36.40.xlsx"
'   Запускайте при активном листе "Лист1"

    Dim Rw&, RwL&, Co&, CoL&
    Dim Data(), ShData As Worksheet, ShOtchet As Worksheet
    
    Set ShData = ActiveSheet
    With ShData
        RwL = -1 + .Cells(Rows.Count, "A").End(xlUp).Row
        CoL = -1 + .Cells(5, Columns.Count).End(xlToLeft).Column
        Data = Range(.Cells(5, 1), .Cells(RwL, CoL))
        Sheets.Add After:=Sheets(ActiveSheet.Index)
        ActiveSheet.Name = "Otchet_" & Format(Now, "YYYY-MM-DD_HH-MM-SS")
        Set ShOtchet = ActiveSheet
        Cells(1, 2) = .Cells(1, 1): Cells(2, 2) = .Cells(2, 1): Cells(3, 2) = .Cells(3, 1)
        Cells(4, 2) = .Cells(5, 1): Cells(4, 1) = .Cells(4, 3)
        Range("A5").Select
        ActiveWindow.FreezePanes = True
    End With
    
    Application.ScreenUpdating = False
    RwL = 5
    For Rw = 1 + LBound(Data, 1) To UBound(Data, 1)
        For Co = LBound(Data, 2) To UBound(Data, 2)
            If Co > 2 Then
                With ShOtchet
                    If Co = 3 Then
                        .Cells(RwL, 1) = Data(LBound(Data, 1), Co)   'Date
                        .Cells(RwL, 2) = Data(Rw, Co - 2)            'Person
                        .Cells(RwL, 3) = Data(Rw, Co - 1)            'Firm
                        .Cells(RwL, 4) = Data(Rw, Co)                'Sum
                    Else
                        .Cells(RwL, 1) = Data(LBound(Data, 1), Co)   'Date
                        .Cells(RwL, 4) = Data(Rw, Co)                'Sum
                    End If
                End With
                RwL = RwL + 1
            End If
        Next Co
    Next Rw
    Application.ScreenUpdating = True
    ShOtchet.Columns(4).NumberFormat = "#,##0.00"
    ShOtchet.UsedRange.Columns.AutoFit
End Sub
Elixi вне форума Ответить с цитированием
Старый 03.08.2022, 00:11   #3
MrGrifff
Новичок
Джуниор
 
Регистрация: 02.08.2022
Сообщений: 5
По умолчанию

не запускается(((

Пишет Run-Time Error 1004 Application-Definded or Object-defined error

Может что то не то делаю? Внес в VBA данный код, пробовал и без двух строк с апострофом и с ними, все же эффекта нет, спасибо за помощь!!!
MrGrifff вне форума Ответить с цитированием
Старый 03.08.2022, 01:02   #4
Elixi
Форумчанин
 
Регистрация: 10.05.2019
Сообщений: 140
По умолчанию

Цитата:
Сообщение от MrGrifff Посмотреть сообщение
не запускается(((

Пишет Run-Time Error 1004 Application-Definded or Object-defined error
Я Вам не писал, что макрос надо запускать из модуля листа Лист1.
В модулях листа создаются макросы для обработки событий листа.
Создайте отдельный модуль и макрос запускайте из него.
Но при активном листе Лист1.
Elixi вне форума Ответить с цитированием
Старый 03.08.2022, 10:57   #5
MrGrifff
Новичок
Джуниор
 
Регистрация: 02.08.2022
Сообщений: 5
По умолчанию

Спасибо огромное, все сработало почти как надо, единственное Что не так вышло, даты не имеют нулей и отчет даты в столбце идет со второго числа, а в соседнем столбце на против второго числа стоит сумма за первое число, и сумма за второе число
MrGrifff вне форума Ответить с цитированием
Старый 03.08.2022, 19:58   #6
Elixi
Форумчанин
 
Регистрация: 10.05.2019
Сообщений: 140
По умолчанию

Цитата:
Сообщение от MrGrifff Посмотреть сообщение
Спасибо огромное, все сработало почти как надо, единственное Что не так вышло, даты не имеют нулей и отчет даты в столбце идет со второго числа, а в соседнем столбце на против второго числа стоит сумма за первое число, и сумма за второе число
Даты не имеют нулей уже в исходнике, который вы выложили. Посмотрите. Это макрос не исправит.
Чтобы это исправить, обращайтесь к тому, кто вам такие данные предоставил.
Что касается остального, не понимаю о чём вы. Если вы не меняли формат исходных данных или
сам макрос, такого не должно быть. Посмотрите на итог у меня и сравните с исходными данными:
Изображения
Тип файла: jpg Отчет.jpg (79.8 Кб, 0 просмотров)
Elixi вне форума Ответить с цитированием
Старый 04.08.2022, 08:11   #7
MrGrifff
Новичок
Джуниор
 
Регистрация: 02.08.2022
Сообщений: 5
По умолчанию

Доброе утро, вы правы, нули я подставил где надо после чего таблица уже выглядела лучше, после чего я подшаманил исходную таблицу и получил тоже самое, что и у вас на скрине, но я убрал третий столбец
MrGrifff вне форума Ответить с цитированием
Старый 04.08.2022, 08:12   #8
MrGrifff
Новичок
Джуниор
 
Регистрация: 02.08.2022
Сообщений: 5
По умолчанию

Вы мне очень помогли, сократили мою работы с суток, до пары часов проверки исходной таблицы
MrGrifff вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно составить функцию обчсиления afirat Общие вопросы Delphi 8 09.12.2012 17:27
Нужно сделать js-функцию для сайта! _Online_ JavaScript, Ajax 8 11.02.2012 11:01
Нужно написать функцию на VBA Оля575 Microsoft Office Access 2 30.05.2010 00:14
нужно написать функцию в делфи 2R0ck Фриланс 4 24.08.2009 00:07
стоит ХР, поэтому функцию БЗ не могу использовать, а нужно рассчитать. что делать, помогите Baxxter Microsoft Office Excel 2 18.04.2009 02:15