powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / чем заменить ссылку на единственный лист?
23 сообщений из 23, страница 1 из 1
чем заменить ссылку на единственный лист?
    #36188323
adverte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ситуация следующая
есть формула в файле ABC.xls
=VLOOKUP(A1;'[Price.xls]week 37'!$A:$B;2;FALSE)
в файле Price.xls есть один единственный лист, но его имя периодически меняется (week 37, week 38, week 39,..)
каким образом решить задачу чтобы этот единственный лист цеплялся автоматически независимо от его текущего имени?
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36188620
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может на листе со ссылкой можна указать этот номер недели ?
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36188698
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну или делаете вот такую маленькую функцию:

Код: plaintext
1.
2.
3.
Function listI(name As String) As String
Application.Volatile
listI = Workbooks(name).ActiveSheet.name
End Function

и потом там где адресс в ВРП пишете примерно следующие:
=ДВССЫЛ(СЦЕПИТЬ("[Price.xls]";listI("Price.xls");"!$A:$B");0)
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36188809
adverte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант с указанием номера думал, но хочется небольшой автоматизации:)
Я правильно понимаю что с помощью формул вопрос не решается?
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36188935
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я посмотрел в нете, вроде ничего нет... я же вам привел пример автоматизацией :)
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36189019
adverte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximuS_G, ну да, я тоже не нашел.
спасибо, уже сделал с функцией по Вашей подсказке.
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36189198
adverte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полностью верный ответ
1. вбить вышенаписанную функцию
2. использовать формулу
=ВПР(A1;ДВССЫЛ(СЦЕПИТЬ("'";"[Price.xls]";listI("Price.xls");"'";"!$A:$B");1);2;False)
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36189677
adverte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё вопрос - всё работает, но только при открытом файле Price.xls. Как сделать чтобы работало и при закрытом файле?
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36189814
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот здесь есть функция, которая вытягивает названия листов из закрытой книги...
http://www.mrexcel.com/forum/showthread.php?t=47074
Насколько я понимаю, имена функция возвращает как колекцию, в вашем случае в ней будет всего один елемент... так что возьмете col(1)... единственное мне кажется что нужно будет определится, будете ли вы работать с закрытой или открытой книгой...
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36189821
adverte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximuS_G, изначально было VLOOKUP(A1;'[Price.xls]week 37'!$A:$B;2;FALSE)
эта строчка вставлена в шаблон и он работает как с открытым источником так и с закрытым.
Как дописать написанную в 3 посте функцию при условии что книга источник может быть и открыта и закрыта?
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36189878
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь наша функция немного увеличилась :)...

Код: plaintext
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.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
Function GetSheetsNames(WBName As String) As Collection
'Needs a reference to:
'Microsoft ActiveX Data Object X.X Library
'Microsoft ADO Ext. X.X for DLL and Security

Dim objConn As ADODB.Connection
Dim objCat As ADOX.Catalog
Dim tbl As ADOX.Table
Dim sConnString As String
Dim sSheet As String
Dim Col As New Collection

sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & WBName & ";" & _
"Extended Properties=Excel 8.0;"

Set objConn = New ADODB.Connection
objConn.Open sConnString
Set objCat = New ADOX.Catalog
Set objCat.ActiveConnection = objConn

For Each tbl In objCat.Tables
sSheet = tbl.name
sSheet = Application.Substitute(sSheet, "'", "")
sSheet = Left(sSheet, InStr( 1 , sSheet, "$",  1 ) -  1 )
On Error Resume Next
Col.Add sSheet, sSheet
On Error GoTo  0 
Next tbl
Set GetSheetsNames = Col
objConn.Close
Set objCat = Nothing
Set objConn = Nothing
End Function

Sub Test()
Dim Col As Collection, Book As String, i As Long
Book = "C:\...\Price.xls"
Set Col = GetSheetsNames(Book)
For i =  1  To Col.Count
MsgBox Col(i)
Next i
End Sub

Function listI(name As String) As String
Dim Col As Collection, Book As String, i As Long
Application.Volatile
On Error GoTo L1:
listI = Workbooks(name).ActiveSheet.name
Exit Function
L1:
Book = "C:\...\" & name
Set Col = GetSheetsNames(Book)
For i =  1  To Col.Count
listI = Col(i)
Next i
End Function
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36189880
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри, процедура test не нужна, только 2 функции:
Function listI(name As String) As String
Function GetSheetsNames(WBName As String) As Collection
и не подключите библиотеки, какие указаны здесь:
Код: plaintext
1.
'Microsoft ActiveX Data Object X.X Library
'Microsoft ADO Ext. X.X for DLL and Security
как подключать: редактор vba - tools - references, там уже выбирите... "Х.Х" означают номер версии, я выбирал и там и там самую последнюю, которая у меня была: 2.8
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36189881
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и не подключите библиотеки
НЕ лишнее, хотел сказать не забудьте подключить :)... Библиотеки надо подключить!
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36190439
adverte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximuS_G, спасибо за подробный текст и проделанную работу, я полагал что мы друг друга не поняли и это делается более коротким образом :)
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36190476
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так этот код решил Ваш вопрос? или Вы будете выводить номер недели :)
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36190855
adverte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximuS_G, нет ещё не решил, номер недели берется, но данные не цепляются при закрытом файле :)
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36190898
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну разбирайтесь :)...
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36190955
adverte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вобщем перестал срабатывать indirect ('[Price.xls]week 37'!$A:$B)
пишет что неправильная ссылка. что я сделал не так?
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36190994
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что такое inderect ?
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36191230
adverte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это ДВССЫЛ
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36191313
adverte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вобщем всё зря, решал не ту задачу.
Вопрос на самом деле другой - как написать аналог
=VLOOKUP(A1;'[Price.xls]week 37'!$A:$B;2;FALSE)
на visual basic?
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36191635
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тут в файле от madg была функция, может пригодится:
Код: plaintext
\nFunction VLOOKUP2(Table As Range, SearchColumnNum As Integer, SearchValue As Variant, _\n                                        N As Integer, ResultColumnNum As Integer)\n    Dim i As Integer\n    Dim iCount As Integer\n          \n    For i =  1  To Table.Rows.Count\n            If Table.Cells(i, SearchColumnNum) = SearchValue Then\n                iCount = iCount +  1 \n            End If\n            If iCount = N Then\n                VLOOKUP2 = Table.Cells(i, ResultColumnNum)\n                Exit For\n            End If\n        Next i\nEnd Function\n
...
Рейтинг: 0 / 0
чем заменить ссылку на единственный лист?
    #36194206
adverte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Table
таблица здесь имеется в виду лист книги? т.е. формат должен быть как в ВПР '[Price.xls]week 37'
или каким?

Возможно ли исправить на примерно такой формат
[Price.xls]" & Workbooks("Price.xls").Sheets(1).Name
чтобы "скармливать" таблицу и указывать, например, работать с листом №1 по порядку ?
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / чем заменить ссылку на единственный лист?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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