在Excel中的多个列中查找第n次出现

时间:2014-10-29 07:47:35

标签: excel excel-vba excel-formula vba

我有两个包含团队名称的列和两个包含相应统计数据的列。我需要浏览2列并找到与团队名称相匹配的统计数据,并且需要按顺序排列。 VLOOKUP,MATCH和SEARCH似乎不适用于多列。有谁知道如何做到这一点?enter image description here

1 个答案:

答案 0 :(得分:1)

假设在你的照片中," Home" title在单元格B2中,然后可以将以下数组公式放入单元格H3:L7中(需要使用 Ctrl + Shift 输入数组公式+ 输入

=IFERROR(OFFSET($D$1,-1+SMALL(IF(($B$3:$B$7=H$2)+($C$3:$C$7=H$2),ROW($B$3:$B$7),"X"),ROW()-ROW($2:$2)),--NOT((INDEX($B:$B,SMALL(IF(($B$3:$B$7=H$2)+($C$3:$C$7=H$2),ROW($B$3:$B$7),"X"),ROW()-ROW($2:$2)))=H$2))),"")

让我分解......

  • 逻辑是:OFFSET(top_of_results,row_number_that_has_Nth_team_score,0_or_1_for_home_or_away)
  • 这包含在IFERROR in中,因为它没有例如A队的第5个分数
  • 使用数组部分IF(($B$3:$B$7=H$2)+($C$3:$C$7=H$2),ROW($B$3:$B$7),"X"我们得到一个包含ROW数字的数组(如果使用+)完成BC值匹配我们的团队标题(H$2)或X否则
  • 使用SMALL(...,ROW()-ROW($2:$2))我们得到第N个最小的行,基于第1行在第3行,第2行在第4行等。
  • 要知道它是在家还是在外,我们检查行上的B列,看它是否与--NOT((INDEX($B:$B,row_number_that_has_Nth_team_score-O)=H$2))相匹配,这给出0为家,1为远,这用于抵消列

希望它有意义。数组公式非常强大,如果有点混乱:-)我建议CPearson's intro获取更多信息。

祝你好运!