Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
обновление запросов в множестве файлов макросом
 

День добрый. Есть необходимость обновлять однотипные запросы в перечне файлов находящихся в одной папке (в этой папке собираются данные по годам из исходников. Каждый файл делает выборку по своему году, сделано это из-за того что накопительно очень большой массив исходной информации и обновление каждый месяц через прокрутку всего массива долгое).

(Добавляется параметр по которому в запросах идёт отбор и нужно добавить исторические данные в массив получаемого запроса)

Написал код, при проверке через пошаговое выполнение запрос обновляется во всех книгах.

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

Что не так?

Код
Sub Обновить_иторию()

Dim sFolder As String, sFiles As String, wb As Workbook
'отключаем обновление экрана, чтобы наши действия не мелькали
    Application.ScreenUpdating = False
'отключаю появление всплывающего окна
    Application.DisplayAlerts = False

sFolder = "ТУТ прописан адрес конкретной папки"
sFiles = Dir(sFolder & "*.xlsx*")
    Do While sFiles <> ""
        'открываем книгу
        Set wb = Workbooks.Open(sFolder & sFiles)
            Dim Connection As WorkbookConnection
            For Each Connection In wb.Connections
                If Connection.Name = "Запрос — фин" Then
                Connection.Refresh
                End If
            Next Connection
        wb.Close True
        sFiles = Dir
    Loop
'возвращаем ранее отключенное обновление экрана
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True

Изменено: Артём Кремлёв - 09.08.2024 06:21:29
суммирование ячеек динамического диапазона
 
День добрый.
Помогите разобраться в формуле.
Код
=СУММ(ИНДЕКС('C:\Users\ххх\Desktop\[книга1.xlsb]Производство'!$I$49:$DD$49;1;ПОИСКПОЗ(ЗНАЧЕН(ЛЕВСИМВ(AL6;4));'C:\Users\ххх\Desktop\[книга1.xlsb]Производство'!$I$6:$DD$6;0)):ИНДЕКС('C:\Users\ххх\Desktop\[книга1.xlsb]Производство'!$I$49:$DD$49;1;ПОИСКПОЗ(ЗНАЧЕН(ЛЕВСИМВ(AL6;4)+2);'C:\Users\ххх\Desktop\[книга1.xlsb]Производство'!$I$6:$DD$6;0)))

В данном случае при открытой книге1 формула работает корректно, при закрытой книге ошибка #ССЫЛКА!
Вторая часть диапазона динамическая ПОИСКПОЗ(ЗНАЧЕН(ЛЕВСИМВ(AL6;4)+2) стоит сейчас для примера.
Ячейка AL6 содержит текст 2025+ (то есть нужно просуммировать исходную информацию с 2025 года и до определённого года, который может меняться в зависимости от различных условий)
Если я делаю ПОИСКПОЗ(ЗНАЧЕН(ЛЕВСИМВ(AL6;4)+1) то формула понимает итоговый диапазон даже при закрытой книге как 2 смежных ячейки.
Как только диапазон начинает расширяться далее направо по строке, то формула при закрытой книге перестаёт его воспринимать как единое целое.

Как можно ещё просуммировать динамический диапазон, что бы это работало при закрытых книгах исходниках или что нужно изменить в текущей версии формулы?
Пробовал "суммесли", "смещ", но они не понимают даже единичную ячейку при закрытой книге исходнике.

Спасибо.
[ Закрыто] Нужна помощь в поиске ошибки
 
В прилагаемом файле на листе ZERO сделаны 2 графика.

Нужно их скопировать количество раз равное списку на вкладке инвентаризация

А так же на каждом листе проработать данные для графика 2 и при необходимости удалить его или размножить вместе с данными.

Макрос работает нормально при ручном F5, если запускать на автомат выдаёт сбои.

Что можно улучшить?  
Гиперссылка на создаваемый лист
 
Доброго времени суток
Помогите с гиперссылками.
Макрос меняет параметры для формирования данных для графика.
Потом копирует полученный лист, переименовывает из от 1 до нужного кол-ва
И в итоге мне нужно в первом столбце таблицы с исходными данными на листе Инвентаризация поставил гиперссылку на этот лист.
В примере ниже гиперссылка создаётся но не работает
Код
Sub графики()
Dim r, i, inv As Integer
    Application.ScreenUpdating = False

    With Sheets("Инвентаризация")
        .Activate
        .Range("C3").End(xlDown).Select
        r = ActiveCell.Row
    End With
For i = 3 To r
    Sheets("График").Select
    Cells(7, 2).Select
        ActiveCell.FormulaR1C1 = "=Инвентаризация!R" & i & "C4"
    Cells(8, 2).Select
        ActiveCell.FormulaR1C1 = "=Инвентаризация!R" & i & "C5"
    Cells(9, 2).Select
        ActiveCell.FormulaR1C1 = "=Инвентаризация!R" & i & "C6"
    Range(Cells(5, 2), Cells(5, 25)).Select
    Selection.ClearContents
    Cells(10, 1).Select
        ActiveCell.FormulaR1C1 = "=Инвентаризация!R" & i & "C9"
    Cells(10, 2).Select
        ActiveCell.FormulaR1C1 = "=MATCH(R10C1,R1C2:R1C25,1)"
    inv = Cells(10, 2).Value
    Cells(5, inv + 1).Select
    ActiveCell.FormulaR1C1 = "=MAX(R4C2:R4C25)*1.05"
    Sheets("График").Copy After:=Sheets(i)
    Sheets("График (2)").Select
    Sheets("График (2)").Name = i - 2
    ActiveSheet.Rows("1:10").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveSheet.Range("A1").Select
    Application.CutCopyMode = False
    Sheets("Инвентаризация").Activate
    ActiveSheet.Cells(i, 1).Select
    ActiveCell.Value = i - 2
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'Лист" & i - 2 & "'!A1"
    Next i
    Application.ScreenUpdating = True

End Sub
Запись макроса даёт:
Код
SubAddress = "'1'!A1"
Формула с изменяемым листом
 
День добрый!
Имеется формула
Код
ActiveCell.FormulaR1C1 = _
                    "=SUMPRODUCT(('В-I-1'!R4C7:R38C7=календарь!R2C2)*('В-I-1'!R2C21:R2C137=календарь!R11C)*('В-I-1'!R3C21:R3C137=календарь!R4C2),'В-I-1'!R4C21:R38C137)"

Программа предусматривает перебор листов, номер листа записывается в параметр Sh
Каким образом преобразовать текст формулы, что бы ссылка на лист была переменной?
Изменено: Артём Кремлёв - 07.02.2019 03:11:07
Страницы: 1
Наверх