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

Returning value of matching cell in a dynamically changing range with formulas?

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

目标:
- 为每个日期范围匹配客户 ID 和 return 值 1 和值 2。 (红框内的区域)

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

当前攻角(仅适用于单元格 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))
returns 是正确的范围,但是当它被插入到 Vlookup 的范围目标时,我得到一个值错误。另一个失败是它不适用于数据的最后一部分,因为它将缺少带日期的结尾 header。

波纹管是我将要使用的数据的一个非常简化的版本:

感谢您对这个头疼器的所有帮助

如果我正确理解了您的要求,那么 return 值 1 的以下内容如何:

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

这使用 OFFSET 函数来建立您的 VLOOKUP 范围。使用第 4 个和第 5 个参数 return 是一个范围而不是单个单元格。

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

要修改为return Value2,将"FALSE"前的“2”改为“3”即可。