Kamyshev написал: Допустим есть телефонные номера распределенные по годам. 1 книга = один год
Цитата
Kamyshev написал: К сожалению книг более 100 и каждую проверять очень сложно
Зачем вам телефонные номера начала XX-го века? А если серьёзно, что значит "Каждую проверять очень сложно"? Как иначе Вы собираетесь найти то, что вам нужно?
Посмотрите здесь Вообще для решения подобных задач лучше подойдёт база данных, в которой будет реализована вся эта многомерная структура. А уже из неё можно получать что угодно и как угодно. Если же делать это в Excel, я бы реализовывал с помощью VBA и элементов управления, а не с помощью проверки данных и формул.
Sub CreateListLinks()
Dim i As Long
Dim strTemp As String
Dim ItWb As Variant
Dim ItWhs As Variant
i = 1
For Each ItWb In Workbooks
If ItWb.Name <> "PERSONAL.XLSB" And ItWb.Name <> ThisWorkbook.Name Then
For Each ItWhs In ItWb.Worksheets
i = i + 1
strTemp = "='[" & ItWb.Name & "]" & ItWhs.Name & "'!A1"
ActiveSheet.Cells(i, 1).Formula = strTemp
Next
End If
Next
End Sub
1. Тип операции не имеет ни какого значения, данные подставляются на основании КБК 2. Ни чего ни в каком месте исправлять не нужно, данные с листа будут взяты в полном объеме, в не зависимости от их количества, единственным ограничением может быть объем доступной оперативной памяти, но это актуально на объемах данных гораздо больше чем 5 тыс. строк
Привязываться к порядковому номеру числа сомнительная затея, на сколько я понимаю нужно вытаскивать значения неких физических величин. Я бы делал это с помощью регулярных выражений, но это выходит за рамки "формульного" решения.
Sub q1()
strPath$ = Selection.Parent.Parent.Path
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
On Error Resume Next: Err.Clear
If Val(Application.Version) < 12 Then Exit Sub
ActiveWorkbook.SaveAs strPath$ & "\" & [A2], xlText
End Sub
А что мешает перехватить Path перед созданием новой книги? И вопрос о месте хранения кода остается открытым, если он хранится в третьей книге, как вам поможет ThisWorkbook?