以前投稿した記事の関数DI,MIを使い勝手が良いように修正しました。
なにが変わったかというと、Range名が文字列でも可能となりました。
文字列で可能ということは、さらに拡張するとマクロ的な表現が可能となります。
Function DI(R, I, Optional J = 1, Optional S = "") ' DATA INDEX
On Error Resume Next
If TS_(R) Then Set R = Range(R)
If I > 0 Then S = WorksheetFunction.Index(R, I, J)
If TS_(R) Then S = ""
DI = S
End Function
Function MI(R, V, Optional S = "") ' MATCH INDEX
On Error Resume Next
If TS_(R) Then Set R = Range(R)
S = WorksheetFunction.Match(V, R, 0)
MI = S
End Function
Function TS_(M, Optional N = "", Optional L = "", Optional T = "String")
TS_ = TR_(M, T) * TR_(N, T) * TR_(L, T)
End Function
Function TR_(R, Optional T = "Range")
TR_ = (TypeName(R) = T)
End Function