经过几个小时的搜索和尝试,我已经承认失败,并向这个社区的智慧寻求帮助。
目标:
- 匹配客户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的范围目标时,我得到一个值错误。另一个失败的原因是它不适用于最后一部分数据,因为它将丢失带有日期的结束标题。
贝娄是我将要使用的数据的简化版本:
感谢您对这个头部刮擦器的任何和所有帮助
答案 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"。