введите описание изображения здесь Как обойти эту ситуацию?
Как вы знаете, формула VLOOKUP в EXCEL показывает первое значение, найденное в таблице. Иногда вам нужно получить все значения из таблицы в виде списка. Поэтому я подумал, что должна быть такая функция (формула): = VLOOKUP_NUMBER_VALUE (DesiredValue, ColumnWhereWeSearch, ColumnFromWhereWeWantToGet, Number)
Function VLOOKUP_NUMBER_VALUE(DesiredValue As Variant, ColumnWhereWeSearch As Range, ColumnFromWhereWeWantToGet As Range, Number As Integer)
VBA Code:
On Error GoTo VLOOKUP_NUMBER_VALUE_ERR
n = 0
'we start to loop column if there is our desired value
For Each cell In ColumnWhereWeSearch
'we don't want to check up empty cells
If cell <> "" Then
'if the cell has our desired value we number it using n variable
If cell = DesiredValue Then n = n + 1
'if this n equals our Number in function arguements we need to get row number in cell in order to find the value in the column where we want to get lookup
If n = Number And cell = DesiredValue Then RowNumber = cell.Row
End If
Next cell
'here we just get column number our third variable
ColumnNumberResult = ColumnFromWhereWeWantToGet.Column
'Result:
VLOOKUP_NUMBER_VALUE = Cells(RowNumber, ColumnNumberResult)
Exit Function
VLOOKUP_NUMBER_VALUE_ERR:
'this row gives "-" when error occurs
VLOOKUP_NUMBER_VALUE = "-"
End Function
проблема в том, что эта функция не работает, когда я использую в диапазонах аргументов с других листов, книг. и я примерно понимаю почему. получается, что я не указал имя документа, лист в аргументах или в функции, и мне нужно как-то получить его внутри функции.