假设我在工作簿的数据表上有如下数据:
名称 1 | 名称 2 |
---|---|
鲍勃 | 杰夫 |
我想在另一张工作表上制作下拉单元格,该单元格将自动填充另一列,具体取决于先填充的是哪一列。
例如,如果我在 NAME 2 中填写 Jeff,则 Bob 会自动出现在 中NAME 1
,或者如果我在 NAME 1 中填写 Bob,则 Jeff 会出现NAME 2
。这可能吗?
我一直在使用VLOOKUP()
NAME 2 中的功能,但是,这限制我只能使用 NAME 1 通过下拉菜单进行搜索。
我将非常感激任何帮助或想法!
答案1
乍一看,由于循环引用,需要使用 VBA。但是,可以“安全地”创建公式,在执行循环引用之前停止计算。停止计算的一种方法是使用IF()
语句。为了解决您的另一个问题,升级到XLOOKUP()
允许从任一方向返回数组值,并且具有错误捕获的额外好处(屏幕截图第 4 行和第 5 行)。
掌握了这些知识后,就可以将公式插入和中Name1
。Name2
如果特定行的公式在两列中都存在,则返回空白。这会停止计算,因此不会计算循环引用。
但是,当公式被实际值覆盖时Name1
,公式Name2
将计算为 false 并返回 XLOOKUP()
,反之亦然。例如:
在屏幕截图中,我使用了条件格式来显示公式仍然存在的位置(绿色)以及公式被值覆盖的位置。
请注意,如果要重复使用某一行,则需要重新复制公式。
A列代码示例:=IF(ISFORMULA(B6),"",XLOOKUP(B6,$D$2:$D$6,$C$2:$C$6,"not in col2",0))
B列代码示例:=IF(ISFORMULA(A6),"",XLOOKUP(A6,$C$2:$C$6,$D$2:$D$6,"not in col1",0))
- - 编辑 - -
我刚刚测试过,您可以将下拉数据验证叠加到此解决方案: