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

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”。

【讨论】:

这完全符合预期,我不认为使用静态“日期”并计算出现次数。感谢您快速而有帮助的回复!

以上是关于使用公式在动态变化的范围内返回匹配单元格的值?的主要内容,如果未能解决你的问题,请参考以下文章

使用单元格中的值作为公式中的单元格引用?

需要一种将多列动态汇总为不同高度的合并单元格的方法

当参考范围内的值发生变化时,VBA 更新公式

Excel 2010:如何以公式方式计算包含合并单元格的范围内的单元格总数?

有条件地显示具有匹配值的单元格的行中的值

当另一个单元格的值发生变化时,一个单元格中的自动日期更新(通过公式计算)