Для моей проблемы у меня есть UDF, который принимает строку и, используя регистр выбора, затем возвращает ссылку на строку в указанный массив.Возвращаемая строка представляет собой ссылку на массив листа и диапазона в следующем виде:
'WorksheetExample'! $ B $ 1: $ E $ 44
Этот пользовательский UDF является вложеннымв VLookup / Match в моей таблице, чтобы дать правильную ссылку для этого случая.
Public Function EquipCatRNG(tag As String, tagOrCatRef As String)
'Hardcoded Category Ranges for Matches
Dim tagRef, catRef As String
Dim subfix As String
subfix = Left(tag, 1)
Select Case subfix
Case "E"
'Range for heat exchanger info, 'Heat Exchangers Template (EDS)'!$B$1:$J$53
tagRef = "'Heat Exchangers Template (EDS)'!$B$1:$J$1"
catRef = "'Heat Exchangers Template (EDS)'!$B$1:$B$53"
Case "P"
If InStr(tag, "Drive") > 0 Then
tagRef = "'Pumps And Drives Template (EDS)'!$B$44:$G$44"
catRef = "'Pumps And Drives Template (EDS)'!$B$44:$B$68"
Else
tagRef = "'Pumps And Drives Template (EDS)'!$B$1:$G$1"
catRef = "'Pumps And Drives Template (EDS)'!$B$1:$B$42"
End If
Case "T"
If InStr(tag, "Internals") > 0 Then
tagRef = "'Towers Template (EDS)'!$B$46:$E$46"
catRef = "'Towers Template (EDS)'!$B$46:$B$68"
Else
tagRef = "'Towers Template (EDS)'!$B$1:$E$1"
catRef = "'Towers Template (EDS)'!$B$1:$B$44"
End If
Case "R"
tagRef = "'Reactors Template (EDS)'!$B$1:$C$1"
catRef = "'Reactors Template (EDS)'!$B$1:$B$61"
Case "H"
tagRef = "'Heaters Template (EDS)'!$B$1:$C$1"
catRef = "'Heaters Template (EDS)'!$B$1:$B$45"
Case "V"
If InStr(tag, "Internals") > 0 Then
tagRef = "'Vessels Template (EDS)'!$B$45:$F$45"
catRef = "'Vessels Template (EDS)'!$B$45:$B$64"
Else
tagRef = "'Vessels Template (EDS)'!$B$1:$F$1"
catRef = "'Vessels Template (EDS)'!$B$1:$B$43"
End If
End Select
tagOrCatRef = LCase(tagOrCatRef)
If tagOrCatRef = "tag" Then
EquipCatRNG = tagRef
Else
EquipCatRNG = catRef
End If
End Function
Любая помощь приветствуется, я также был бы в порядке, если бы передавал Range непосредственно из UDF вместо возврата строки, а затем выполнял некоторую операцию, чтобы использовать ее в формуле.Спасибо.
РЕДАКТИРОВАТЬ для ясности: эта функция успешно передает строку, но она не работает в качестве допустимой ссылки в функциях Vlookup / Match в моей таблице.Мне нужно знать, как это сделать: 1. Выполнить операцию формулы для возвращенной строки после UDF, чтобы Vlookup принял ее в качестве допустимой ссылки?2. Передать это изначально как диапазон?