使用公式返回动态变化范围内匹配单元格的值?

时间:2017-01-13 16:45:42

标签: excel dynamic range match between

经过几个小时的搜索和尝试,我已经承认失败,并向这个社区的智慧寻求帮助。

目标:
  - 匹配客户ID并返回每个日期范围的值1和值2。 (红色框中的区域)

限制让我得到一个简单的解决方案:
  - 无法以任何方式修改数据(黑框中的区域),它位于另一个工作表中,并且不能添加辅助列   - 数据由标题分隔,标题只有日期范围变化,但数据长度为动态
- 此工作表上不允许使用宏,因此解决方案必须是公式

当前攻角(仅适用于H2):

=VLOOKUP(G1,("B"&(MATCH(G2,B:B,0)+ROW(B:B)-1)&":"&"D"&(MATCH(G3,B:B,0)+ROW(B:B)-1)),2,FALSE)


这会尝试通过匹配日期并插入找到的行号来定义Vlookup范围     =("B"&(MATCH(G2,B:B,0)+ROW(B:B)-1)&":"&"D"&(MATCH(G3,B:B,0)+ROW(B:B)-1))
返回正确的范围,但当它插入Vlookup的范围目标时,我得到一个值错误。另一个失败的原因是它不适用于最后一部分数据,因为它将丢失带有日期的结束标题。

贝娄是我将要使用的数据的简化版本:

enter image description here

感谢您对这个头部刮擦器的任何和所有帮助

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的要求,请返回以下内容以返回Value1:

  

= VLOOKUP(G1,OFFSET(B1,MATCH(G2,B:B,0),0,IFERROR(MATCH("日期",OFFSET(A1,MATCH(G2,B:B, 0),0,COUNTA(A:A),1),0),COUNTA(A:A)),3),2,FALSE)

这使用OFFSET功能来建立您的VLOOKUP范围。使用第4和第5个参数返回范围而不是单个单元格。

其中两个MATCH函数查找G2中指定的日期范围的文本。另一个MATCH函数查找文本的下一个实例"日期" G2比赛结束后;但是,IFERROR函数保护最后一个范围(因为没有另一个" Dates"单元格),并使范围尽可能大,以覆盖最终日期范围。

要修改它以返回Value2,请更改" 2"在" FALSE"之前成为" 3"。