How to return an array where a column matches a value

梦想与她 提交于 2020-04-18 05:35:23

问题


I am trying to create the column _Type_below which return the type value for a matching name AND a matching interval. I know I can use VLOOKUP for individual names, but lets say I have thousands of names and I can specify an array for VLOOKUP for all of them. Cheers!!

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
...       

回答1:


If yu have the dynamic array formula you can use FILTER():

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


If not then your data must be sorted on D then 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)

This should be relatively quick, but it requires the data sorted.




回答2:


You can go super old fashioned and get the row using SumProduct() and pass that into Index(). It's not going to be speedy though.

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



来源:https://stackoverflow.com/questions/60997373/how-to-return-an-array-where-a-column-matches-a-value

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!