如何 return 列与值匹配的数组

How to return an array where a column matches a value

我正在尝试创建列 _Type_below,其中 return 匹配名称和匹配间隔的类型值。我知道我可以将 VLOOKUP 用于单个名称,但假设我有数千个名称,我可以为所有名称指定一个 VLOOKUP 数组。干杯!!

Name   position             _Type_             Name    Range_From      Range_To     Type
bob    0                      A                bob     0               30            A
bob    5                      A                bob     30              100           B
bob    10                     A                doug    0               40            C
bob    15                     A                doug    40              200           A
bob    20                     A
bob    30                     B
bob    40                     B
bob    80                     B
doug   0                      C
doug   20                     C
doug   40                     A
...       

如果您有动态数组公式,您可以使用 FILTER():

 =VLOOKUP(B2,FILTER(E:G,A2=D:D),3)


如果不是,则您的数据必须按 D 排序,然后按 E:

=VLOOKUP(B2,INDEX(E:E,MATCH(A2,D:D,0)):INDEX(G:G,MATCH(A2,D:D,0)+COUNTIF(D:D,A2)-1),3)

这样应该比较快,但是需要对数据进行排序。

您可以采用超级老式的方法,使用 SumProduct() 获取行并将其传递给 Index()。不过速度不会很快。

=INDEX($I:$I, SUMPRODUCT(($F:$F=A2)*($G:$G<=B2)*($H:$H>B2)*ROW($F:$F)), 1)