如何 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)
我正在尝试创建列 _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)