1

我有一个 Excel 表格,其中包含行中的 [Year & Week number] 矩阵和 row1 中的 [name of Employees],给出每周可用小时数的值。

Excel_Query_Data

我能够成功使用 Excel 公式

=LOOKUP(2,1/((A:A=2018)*(B:B=31)),D:D)

在单元格 F2 进行反向查找。它正确地给出了结果15

但是,我想通过在员工已知时识别列来将上述公式中的范围 D:D 替换为动态范围。

所以我尝试用公式替换

SUBSTITUTE(ADDRESS(1,MATCH("Employee2",1:1,0),4),"1","") &":"&SUBSTITUTE(ADDRESS(1,MATCH("Employee2",1:1,0),4),"1","")

这部分公式有效,并为 Employee2 提供D:D。这显示在单元格 F4 中有效。

但是修改后的公式给出了#Value的错误!在单元格 F6。

它说“公式中使用的值的数据类型错误。” 修改后的公式不起作用:

=LOOKUP(2,1/((A:A=2018)*(B:B=31)),SUBSTITUTE(ADDRESS(1,MATCH("Employee2",1:1,0),4),"1","") &":"&SUBSTITUTE(ADDRESS(1,MATCH("Employee2",1:1,0),4),"1",""))

我希望有人可以帮助我在尝试使用 SUBSTITUTE、ADDRESS 和 MATCH 函数的组合替换 LOOKUP 公式中的范围 D:D 时出错的地方。

感谢所有试图提前提供帮助的人。

4

1 回答 1

1

您不能只插入一个字符串,这是 SUBSTITUTE 返回到公式中的内容。

您可以使用 INDERICT 将字符串转换为可行的参考:

INDIRECT(SUBSTITUTE(ADDRESS(1,MATCH("Employee2",1:1,0),4),"1","") &":"&SUBSTITUTE(ADDRESS(1,MATCH("Employee2",1:1,0),4),"1",""))

但是 INDIRECT 和 ADDRESS 都是不稳定的。

改为使用 INDEX 返回正确的列:

INDEX(A:AAA,0,MATCH("Employee2",1:1,0))

所以你的公式是:

=LOOKUP(2,1/((A:A=2018)*(B:B=31)),INDEX(A:AAA,0,MATCH("Employee2",1:1,0)))
于 2018-08-03T17:52:44.253 回答