powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel 2007 Связь с большим кол-вом книг для расчета
16 сообщений из 16, страница 1 из 1
Excel 2007 Связь с большим кол-вом книг для расчета
    #36892252
Фотография prog13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!
задача: нужно рассчитать по определенным формулам 23 показателя, из них 3 считается по средней хронологической формуле.
условие: данные представлены только в xls файлах, структура в принципе одинаковая, имена и каталоги хранения совпадают с месяцем отчета.

мои действия: создал книгу, связал формулами индекс(), поискпоз() и абсолютными ссылками (где это было возможно), рассчитал на примере одного месяца показатели на первом листе. На втором создал таблицу расчета средних хронологических для 3х показателей. таблица вида
01.08.201001.09.2010 '...\X1007\[имя_1007.xls]Лист1'!$B$25'...\X1008\[имя_1008.xls]Лист1'!$B$25
Хотелось бы (в зависимости от месяца и года введенной даты) обновлять ссылки на обоих листам. Поиском нашел макрос обновления.

Sub UpdLink()
Application.DisplayAlerts = False
aLinks = ActiveWorkbook.LinkSources(xlExcelLinks)
If Not IsEmpty(aLinks) Then
For i = 1 To UBound(aLinks)
fname = aLinks(i)
If FileExists3(fname) = True Then
ActiveWorkbook.UpdateLink Name:=fname
' Else
' x = Split(fname, "\")
' fnput = Replace(fname, x(UBound(x)), "[" & x(UBound(x)) & "]")
' For Each Sh In ActiveWorkbook.Sheets
' Sh.Cells.Replace What:=fnput, Replacement:=fnput, LookAt:=xlPart
' Next Sh
End If
Next i
End If
Application.DisplayAlerts = True
End Sub

Файл выложить не могу. На текущий момент в файле около 40 связей. Применительно к моей задаче как использовать этот макрос? Или есть альтернатива данному алгоритму? Думал про сводную таблицу, но не уверен, что подойдет. Заранее спасибо.
...
Рейтинг: 0 / 0
Excel 2007 Связь с большим кол-вом книг для расчета
    #36892588
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prog13 Применительно к моей задаче как использовать этот макрос? нет
prog13Файл выложить не могу. На текущий момент в файле около 40 связей.. выложите микропример
...
Рейтинг: 0 / 0
Excel 2007 Связь с большим кол-вом книг для расчета
    #36892589
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет=никак
...
Рейтинг: 0 / 0
Excel 2007 Связь с большим кол-вом книг для расчета
    #36892728
Фотография prog13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Shamanus
архив нужно распаковать в C:\TEMP. связи настроил на двух листах. Спасибо
...
Рейтинг: 0 / 0
Excel 2007 Связь с большим кол-вом книг для расчета
    #36892885
Фотография prog13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ап
...
Рейтинг: 0 / 0
Excel 2007 Связь с большим кол-вом книг для расчета
    #36892982
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prog13,

об этом речь?
...
Рейтинг: 0 / 0
Excel 2007 Связь с большим кол-вом книг для расчета
    #36893056
Фотография prog13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1001 - это январь 2010. но суть понял.
Shamanus, спасибо огромное, то что нужно.
...
Рейтинг: 0 / 0
Excel 2007 Связь с большим кол-вом книг для расчета
    #36893070
Фотография prog13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а со второго листа также нужно тащить только то среднее, которое соответствует указанному месяцу. то есть расчет на март 2010 (каталог 1003) - нужна ячейка со второго листа $D$8, соответствующая среднему на март 2010. ну я по аналогии тогда буду смещать в зависимости от месяца
...
Рейтинг: 0 / 0
Excel 2007 Связь с большим кол-вом книг для расчета
    #36893132
Фотография prog13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shamanus, не подскажите, как в коде оставить в формуле "134" и "115" без изменений, а изменять только после знака подчеркивания?
Код: plaintext
'134_1001.xls'$B$ 1  /'115_1001.xls'$B$ 2 
...
Рейтинг: 0 / 0
Excel 2007 Связь с большим кол-вом книг для расчета
    #36893198
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prog13,

не совсем понял, что нужно.

Если нужно "склеивать" предложение, то фиксируете также как я написал
Код: plaintext
1.
2.
3.
4.
5.
part_1 = "='C:\Temp\"  ' это фиксированная часть текста
part_2 = Format(MonthNum(Cells( 2 ,  4 )), "00") & Format(Cells( 2 ,  5 ), "00") & _
"\[10_" & Format(MonthNum(Cells( 2 ,  4 )), "00") & Format(Cells( 2 ,  5 ), "00") & ".xls]"
part_3 = "Лист1'!"   ' это тоже

part = part_1 & part_2 & part_3

т.е. в Вашем решении можно так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
part_1="'134_"
part_2=   ...  ' тут идет вычисляемое значение которое в итоге дает "1001.xls"
part_3="'115"
'134_1001.xls'$B$1 /'115_1001.xls'$B$2

'тогда формула примет вид

part=part_1 & part_2 & "$B$1/" & part_3 & part_2  & "$B$"

но есть и другой способ. Есть подмена.

например было так

автор'134_1001.xls'$B$1 /'115_1001.xls'$B$2
нужно так
автор'134_1002.xls'$B$1 /'115_1002.xls'$B$2

Код: plaintext
part = InStr('134_1001.xls'$B$ 1  /'115_1001.xls'$B$ 2 ,"1001", "1002",vbTextCompare)
эта функция подменяет одно значение в тексте на другое

поэтому способов масса.
...
Рейтинг: 0 / 0
Excel 2007 Связь с большим кол-вом книг для расчета
    #36893858
Фотография prog13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за помощь, InStr() походу то, что нужно. Буду пробовать.
...
Рейтинг: 0 / 0
Excel 2007 Связь с большим кол-вом книг для расчета
    #36899271
Фотография prog13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
использую способ разложения формулы на составные части.
когда во внешней книге имя листа "Лист1", все корректно работает. Но у меня есть лист во внешней книге с именем "Форма 2", и при пересчете ячейки с показателем, ссылающимся на этот лист, формула выдает ошибку "ИМЯ?". В VBA коде указывал и напрямую "Форма 2", и переменную, все равно ошибка. Скопировал имя листа, тоже не работает. Но когда в формулу в ячейке вставляю имя листа (Форма 2), все пересчитывает.
Чета с кодировкой походу. А где ее проставить, непонятно. Может кто сталкивался?
...
Рейтинг: 0 / 0
Excel 2007 Связь с большим кол-вом книг для расчета
    #36899379
sergeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня в операторе Run были проблемы, если в имени есть пробелы или знак минус, может и тут что то подобное
...
Рейтинг: 0 / 0
Excel 2007 Связь с большим кол-вом книг для расчета
    #36899406
Фотография prog13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я переименовал в просто "Форма" , все равно после отработки макроса ошибка "ИМЯ?", а когда исправляю в строке формулы, все путем.
...
Рейтинг: 0 / 0
Excel 2007 Связь с большим кол-вом книг для расчета
    #36899701
sergeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
без приведенного кода трудно судить
частая ошибка, когда путают, например, свойства
Код: plaintext
Range("A1").Formula = ...
и
Код: plaintext
Range("A1").FormulaLocal = ...
...
Рейтинг: 0 / 0
Excel 2007 Связь с большим кол-вом книг для расчета
    #36899787
Фотография prog13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
записал макрос с нужной формулой, в нем используются английские названия формул (INDEX,MATCH),
привел в соответствие свой код с записанным макросом (адреса $С$1 заменил на R1C3), и все прекрасно посчиталось, даже несмотря на название листа "Форма 2".
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel 2007 Связь с большим кол-вом книг для расчета
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]