Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / чем заменить ссылку на единственный лист? / 23 сообщений из 23, страница 1 из 1
10.09.2009, 12:37:17
    #36188323
adverte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чем заменить ссылку на единственный лист?
ситуация следующая
есть формула в файле ABC.xls
=VLOOKUP(A1;'[Price.xls]week 37'!$A:$B;2;FALSE)
в файле Price.xls есть один единственный лист, но его имя периодически меняется (week 37, week 38, week 39,..)
каким образом решить задачу чтобы этот единственный лист цеплялся автоматически независимо от его текущего имени?
...
Рейтинг: 0 / 0
10.09.2009, 13:56:24
    #36188620
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чем заменить ссылку на единственный лист?
может на листе со ссылкой можна указать этот номер недели ?
...
Рейтинг: 0 / 0
10.09.2009, 14:13:40
    #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
10.09.2009, 14:42:15
    #36188809
adverte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чем заменить ссылку на единственный лист?
Вариант с указанием номера думал, но хочется небольшой автоматизации:)
Я правильно понимаю что с помощью формул вопрос не решается?
...
Рейтинг: 0 / 0
10.09.2009, 15:14:28
    #36188935
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чем заменить ссылку на единственный лист?
я посмотрел в нете, вроде ничего нет... я же вам привел пример автоматизацией :)
...
Рейтинг: 0 / 0
10.09.2009, 15:35:43
    #36189019
adverte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чем заменить ссылку на единственный лист?
MaximuS_G, ну да, я тоже не нашел.
спасибо, уже сделал с функцией по Вашей подсказке.
...
Рейтинг: 0 / 0
10.09.2009, 16:24:11
    #36189198
adverte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чем заменить ссылку на единственный лист?
полностью верный ответ
1. вбить вышенаписанную функцию
2. использовать формулу
=ВПР(A1;ДВССЫЛ(СЦЕПИТЬ("'";"[Price.xls]";listI("Price.xls");"'";"!$A:$B");1);2;False)
...
Рейтинг: 0 / 0
10.09.2009, 19:05:49
    #36189677
adverte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чем заменить ссылку на единственный лист?
Ещё вопрос - всё работает, но только при открытом файле Price.xls. Как сделать чтобы работало и при закрытом файле?
...
Рейтинг: 0 / 0
10.09.2009, 21:04:24
    #36189814
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чем заменить ссылку на единственный лист?
Вот здесь есть функция, которая вытягивает названия листов из закрытой книги...
http://www.mrexcel.com/forum/showthread.php?t=47074
Насколько я понимаю, имена функция возвращает как колекцию, в вашем случае в ней будет всего один елемент... так что возьмете col(1)... единственное мне кажется что нужно будет определится, будете ли вы работать с закрытой или открытой книгой...
...
Рейтинг: 0 / 0
10.09.2009, 21:12:01
    #36189821
adverte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чем заменить ссылку на единственный лист?
MaximuS_G, изначально было VLOOKUP(A1;'[Price.xls]week 37'!$A:$B;2;FALSE)
эта строчка вставлена в шаблон и он работает как с открытым источником так и с закрытым.
Как дописать написанную в 3 посте функцию при условии что книга источник может быть и открыта и закрыта?
...
Рейтинг: 0 / 0
10.09.2009, 22:17:36
    #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
10.09.2009, 22:20:58
    #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
10.09.2009, 22:22:12
    #36189881
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чем заменить ссылку на единственный лист?
и не подключите библиотеки
НЕ лишнее, хотел сказать не забудьте подключить :)... Библиотеки надо подключить!
...
Рейтинг: 0 / 0
11.09.2009, 10:46:35
    #36190439
adverte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чем заменить ссылку на единственный лист?
MaximuS_G, спасибо за подробный текст и проделанную работу, я полагал что мы друг друга не поняли и это делается более коротким образом :)
...
Рейтинг: 0 / 0
11.09.2009, 10:54:58
    #36190476
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чем заменить ссылку на единственный лист?
так этот код решил Ваш вопрос? или Вы будете выводить номер недели :)
...
Рейтинг: 0 / 0
11.09.2009, 12:53:39
    #36190855
adverte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чем заменить ссылку на единственный лист?
MaximuS_G, нет ещё не решил, номер недели берется, но данные не цепляются при закрытом файле :)
...
Рейтинг: 0 / 0
11.09.2009, 13:06:23
    #36190898
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чем заменить ссылку на единственный лист?
ну разбирайтесь :)...
...
Рейтинг: 0 / 0
11.09.2009, 13:20:52
    #36190955
adverte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чем заменить ссылку на единственный лист?
вобщем перестал срабатывать indirect ('[Price.xls]week 37'!$A:$B)
пишет что неправильная ссылка. что я сделал не так?
...
Рейтинг: 0 / 0
11.09.2009, 13:34:45
    #36190994
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чем заменить ссылку на единственный лист?
а что такое inderect ?
...
Рейтинг: 0 / 0
11.09.2009, 14:36:43
    #36191230
adverte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чем заменить ссылку на единственный лист?
это ДВССЫЛ
...
Рейтинг: 0 / 0
11.09.2009, 14:59:33
    #36191313
adverte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чем заменить ссылку на единственный лист?
вобщем всё зря, решал не ту задачу.
Вопрос на самом деле другой - как написать аналог
=VLOOKUP(A1;'[Price.xls]week 37'!$A:$B;2;FALSE)
на visual basic?
...
Рейтинг: 0 / 0
11.09.2009, 16:40:10
    #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
14.09.2009, 14:19:44
    #36194206
adverte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чем заменить ссылку на единственный лист?
Table
таблица здесь имеется в виду лист книги? т.е. формат должен быть как в ВПР '[Price.xls]week 37'
или каким?

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


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