Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Heroes
1 / 1 / 0
Регистрация: 12.06.2015
Сообщений: 93
1

Еженедельное заполнение итоговой 1-й таблицы нарастающим стогом с 3-х других файлов

03.07.2017, 23:17. Просмотров 852. Ответов 5
Метки нет (Все метки)

В 1С программе еженедельно выгружаются 3 отчета по продажам по 3-м разным каналам продаж, каждый канал в отдельном файле (допустим с постоянными именами Канал1.xls, Канал2.xls, Канал3.xls и сохраняются в одном и том же пути C:\Temp).
Данные 3 отчета с информацией за 1 неделю через ctrl C ctrl V вставляется в итоговую одну таблицу ТАБ_СВОД.xls, которая ведется нарастающим итогом с начала года.
Нужно чтобы вместо ручного копирования отработал макрос.
Нюансы:
- в итоговой таблице даты идут по порядку, а в еженедельных отчетах в случае отсутствия оборотов в торговле некоторые даты могут отсутствовать (означает нет данных). В данном случае по датам, по которым информация в еженедельных 3-х файлах может отсутствовать, в итоговом файле ТАБ_СВОД.xls нужно проставлять 0.
Прикрепляю файл ТАБ_СВОД.xls (итоговая таблица) с данными за период 01.06.2017--03.07.2017 и файлы Канал1.xls, Канал2.xls, Канал3.xls, с информацией за новую неделю, которую с помощью макроса нужно добавить в итоговую таблицу. Результат должен получится как в файле ТАБ_СВОД_new.xls.

Помогите плз с кодом, хоть частично или как можете.
0
Вложения
Тип файла: xls ТАБ_СВОД.xls (24.5 Кб, 5 просмотров)
Тип файла: xls Канал1.xls (18.5 Кб, 3 просмотров)
Тип файла: xls Канал2.xls (18.5 Кб, 3 просмотров)
Тип файла: xls Канал3.xls (19.0 Кб, 4 просмотров)
Тип файла: xls ТАБ_СВОД_new.xls (25.5 Кб, 6 просмотров)
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2017, 23:17
Ответы с готовыми решениями:

Запрос на еженедельное обновление таблицы
Имеется таблица Tabl_BD, из которой пользователь запросом выгружает данные за прошедшие семь дней...

Составление итоговой таблицы
Добрый день. Есть исходная большая таблица Дор. отпр. Ст. отправления Дор. назн. Ст....

Создание итоговой таблицы
Форумчане выручайте.Имеется две таблицы.Необходимо сформировать итоговую на условиях совпадения

Вывод итоговой таблицы
Добрый день уважаемые пользователи форума, помогите составить корректное выражение или подсказать...

Создание итоговой таблицы
Здравствуйте, не могу понять, как правильно написать запрос для формирования таблицы. Надеюсь на...

5
Heroes
1 / 1 / 0
Регистрация: 12.06.2015
Сообщений: 93
05.07.2017, 18:32  [ТС] 2
Может макро редактором записать функцию векселя впр? Но как то это примитивно, может кто знает другой способ?
0
toiai
3180 / 934 / 216
Регистрация: 29.05.2010
Сообщений: 2,030
05.07.2017, 19:30 3
За зарплату раз в неделю можно и вручную заполнить...
Цитата Сообщение от Heroes Посмотреть сообщение
может кто знает другой способ?
Например, с использованием словаря...
1
Heroes
1 / 1 / 0
Регистрация: 12.06.2015
Сообщений: 93
05.07.2017, 19:38  [ТС] 4
Цитата Сообщение от toiai Посмотреть сообщение
За зарплату раз в неделю можно и вручную заполнить...

Например, с использованием словаря...
Вам не сложно написать код, т.к я только учусь
0
toiai
3180 / 934 / 216
Регистрация: 29.05.2010
Сообщений: 2,030
06.07.2017, 19:57 5
Лучший ответ Сообщение было отмечено Heroes как решение

Решение

Как вариант
Кликните здесь для просмотра всего текста
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Sub SborItog3File()
    Dim t$, b#(8), j&, n&, m&, dn As Date, dk As Date, nd As Range
    dn = #6/24/2017#
    dk = #7/3/2017#
    bk = Array("Канал1.xls", "Канал2.xls", "Канал3.xls")
    Set sh = ActiveSheet
    Application.ScreenUpdating = False
    With CreateObject("Scripting.Dictionary")
        For d = dn To dk
            t = DateValue(d)
            .Item(t) = b
        Next
        For j = 0 To UBound(bk)
            Set wb = Workbooks.Open(ThisWorkbook.Path & "" & bk(j))
            a = wb.Sheets(1).UsedRange.Value
            wb.Close False
            For n = 3 To UBound(a)
                If Not IsEmpty(a(n, 1)) Then
                    t = DateValue(a(n, 1))
                    If .exists(t) Then
                        c = .Item(t)
                        For m = 0 To 2
                            c(j * 3 + m) = a(n, m + 2)
                        Next
                        .Item(t) = c
                    End If
                End If
            Next
        Next
        sh.Activate
        Set nd = Columns(1).Find(dn)
        If Not nd Is Nothing Then
            a = Application.Transpose(.items())
            nd.Offset(, 1).Resize(.Count, 9) = Application.Transpose(a)
        End If
    End With
    Application.ScreenUpdating = True
End Sub
1
Heroes
1 / 1 / 0
Регистрация: 12.06.2015
Сообщений: 93
06.07.2017, 22:45  [ТС] 6
Цитата Сообщение от toiai
toiai
это гениально, а вам не сложно написать пару комментариев к коду, чтобы чайники смогли его прочесть ?
0
06.07.2017, 22:45
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2017, 22:45

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

Макрос формирования итоговой таблицы
Доброго вечера всем . Не могу сделать сам , поэтому прошу помощи ) Необходимо сформировать...

Программа обработки итоговой таблицы
Составить программу обработки итоговой таблицы чемпионата по футболу. Игры проходили в один круг,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.