使用公式在动态变化的范围内返回匹配单元格的值?
Posted
技术标签:
【中文标题】使用公式在动态变化的范围内返回匹配单元格的值?【英文标题】:Returning value of matching cell in a dynamically changing range with formulas? 【发布时间】:2017-01-13 16:45:41 【问题描述】:经过数小时的搜索和尝试,我承认失败,并向这个社区寻求智慧的帮助。
目标: - 匹配客户 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 的范围目标中时,我得到一个值错误。另一个失败是它不适用于最后一部分数据,因为它将缺少带有日期的结束标题。
Bellow 是我将使用的数据的一个非常简化的版本:
感谢您对这款头部刮刀的所有帮助
【问题讨论】:
【参考方案1】:如果我正确理解您的要求,那么返回 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
函数会保护最后一个范围(因为没有另一个“日期”单元格),并使范围尽可能大以覆盖最终日期范围。
要将其修改为返回 Value2,请将“FALSE”之前的“2”更改为“3”。
【讨论】:
这完全符合预期,我不认为使用静态“日期”并计算出现次数。感谢您快速而有帮助的回复!以上是关于使用公式在动态变化的范围内返回匹配单元格的值?的主要内容,如果未能解决你的问题,请参考以下文章