具有动态地址(第二个参数)的 VLOOKUP 公式,取决于当前单元格

具有动态地址(第二个参数)的 VLOOKUP 公式,取决于当前单元格

我需要一个 VLOOKUP,它不会搜索整个列的范围,而是从根据当前单元格而变化的地址开始搜索。

company1    user1    01/2020
fixed       val2     1200,00
fixed       val2     1100,00
fixed       val15    3000,00
company1    user2    01/2020
fixed       val13    500,00
fixed       val65    200,00

我正在尝试使用 VLOOKUP 搜索每个“用户”的值。我已经使用另一个公式确定了每个用户的“标题”以获取正确的地址,因此我可以使用 VLOOKUP 来查找它。

因此公式是:

VLOOKUP(<value to be found>,<formula to start cell> : <formula to last cell>,<return column number>)

问题是,无论我做什么,地址都会带有引号。

问题formula to get the start cell出在零件上。我试过了,但没有成功:

CELL("address",INDIRECT(<cell with the address without quotes>,1))

在 VLOOKUP 之外,它返回不带引号的结果,但在公式内部,引号始终存在。即使我在上面的公式中使用 ADDRESS(),它仍然会返回带引号的结果。有人能帮我吗?

答案1

我不确定我理解你在做什么,但如果你的startCellendCell公式将结果地址存储在例如A2和中A3,那么 VLOOKUP 的数组参数将是INDIRECT(A2):INDIRECT(A3)

A2和/或A3可以被任何以字符串形式返回地址的公式替换。

从长远来看,拥有一个组织得更好的数据源会对您更有帮助。

答案2

如果我从头开始解决这个问题,我会使用的策略是创建一个包含组合用户+项目值的复合索引列,然后查找该列,以相对干净和简单的方式实现我所理解的您的目标,避免嵌套函数和执行行数学运算,这很容易导致一行或两行并导致间歇性错误。

下面的例子:底部是复合索引和值查找的公式。

在此处输入图片描述

复合索引列将“用户”和“项目”组合在一起,中间有一个冒号(如果您需要在用户名中使用冒号,请选择另一个用户名中不存在的字符)。当某一行“固定”时,它会通过查找冒号前的文本从上面的行中提取用户名,并将项目名称添加到其中。如果该行不是“固定”的,那么它会更改当前用户。(在“用户”行中添加“#”以停止公式与空白搜索值的匹配)

复合索引列现在包含了您需要的所有信息,并且针对“用户:项目”进行简单的索引/匹配即可得到答案。

仅供参考:INDEX() 通常比 VLOOKUP() 更快、更灵活、更高效。此外,ADDRESS() 和 OFFSET() 等函数会导致工作表上不必要的重新计算,因为 Excel 的计算引擎无法提前确定它们从工作表的哪些部分获取数据。(它们被称为“易失性”函数,在大型工作表上可能会大大降低速度。)

相关内容