Формула для поиска в диапазоне с заданным листом - VBA
Формулировка задачи:
Приветствую!
Имеется следующий макрос:
И макрос:
С помощью макроса "ИмяЛиста" на каждом листе создается столбец/строка с именем текущего листа.
Затем создаются ссылки на эти ячейки на другом листе, для каждого листа.
Что должна делать формула:
В переменной "Массив" изменять имя листа согласно данным из переменной "ИмяЛиста", преобразовав его тем самым в "МассивК". Затем в уже в диапазоне заданном "МассивК" выполнить поиск по переменным "ПвСтолбце" и "ПвСтроке". Переменная "Индекс" нужна для перерасчёта макроса (не всегда отзывается на F9).
Формула не работает, в чём причина понять не могу, прошу помочь.
Листинг программы
- Function П2УЛ(Массив, ПвСтолбце, ПвСтроке, Индекс, ИмяЛиста)
- On Error Resume Next
- МассивЛ = Массив.Parent.Name
- МассивК = Replace(Массив, МассивЛ, ИмяЛиста)
- Set г = МассивК
- МассивСтолбец = МассивК.Columns(1)
- МассивСтрока = МассивК.Rows(1)
- е = Индекс - Индекс
- в = Application.WorksheetFunction.Match(ПвСтроке, МассивСтрока, 0)
- д = Application.WorksheetFunction.Match(ПвСтолбце, МассивСтолбец, 0)
- б = г.Cells(д, в)
- П2УЛ = б
- End Function
Листинг программы
- Function ИмяЛиста(Ячейка) As String
- ИмяЛиста = Ячейка.Worksheet.Name
- End Function
Листинг программы
- Function П2УЛ3(ПвСтолбце, ПвСтроке, Индекс, ИмяЛиста)
- On Error Resume Next
- з = """"
- ж = з & ИмяЛиста & з
- МассивК = Sheets(ж).[B5:G20]
- Set г = МассивК
- МассивСтолбец = МассивК.Columns(1)
- МассивСтрока = МассивК.Rows(1)
- е = Индекс - Индекс
- в = Application.WorksheetFunction.Match(ПвСтроке, МассивСтрока, 0)
- д = Application.WorksheetFunction.Match(ПвСтолбце, МассивСтолбец, 0)
- б = г.Cells(д, в)
- П2УЛ3 = б
- End FunctionFunction П2УЛ4(ПвСтолбце, ПвСтроке, Индекс, ИмяЛиста As String)
- On Error Resume Next
- Dim ж As String
- и = "B5"
- л = "!"
- ж = ИмяЛиста & л & и
- МассивК = Application.WorksheetFunction.INDIRECT(ж)
- Set г = МассивК
- МассивСтолбец = МассивК.Columns(1)
- МассивСтрока = МассивК.Rows(1)
- е = Индекс - Индекс
- в = Application.WorksheetFunction.Match(ПвСтроке, МассивСтрока, 0)
- д = Application.WorksheetFunction.Match(ПвСтолбце, МассивСтолбец, 0)
- б = г.Cells(д, в)
- П2УЛ4 = б
- End Function
Решение задачи: «Формула для поиска в диапазоне с заданным листом»
textual
Листинг программы
- Function П2УЛ5(НомерСтолбцаМассив, НомерСтрокиМассив, ПвСтолбце, ПвСтроке, Индекс, ИмяЛиста)
- On Error Resume Next
- Dim ж As Integer
- ж = ИмяЛиста
- Set Лист = Worksheets(ж)
- Массив = Лист.Range(Cells(НомерСтрокиМассив, НомерСтолбцаМассив), Cells(7000, 7000))
- Set г = Массив
- МассивСтолбец = Массив.Columns(1)
- МассивСтрока = Массив.Rows(1)
- е = Индекс - Индекс
- в = Application.WorksheetFunction.Match(ПвСтроке, МассивСтрока, 0)
- д = Application.WorksheetFunction.Match(ПвСтолбце, МассивСтолбец, 0)
- б = г.Cells(д, в)
- П2УЛ5 = б
- End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д