【发布时间】:2017-04-03 18:14:08
【问题描述】:
我在 Excel 中有 2 个单元格内数据验证列表。两个单元格都包含指向表格的 2 列的下拉箭头。我想要的是当一个单元格包含一个值时,另一个单元格包含表中相应行的值,但它自己的列,反之亦然。
因此,如果我从cell1 的下拉列表中选择一个值,它会覆盖cell2,如果我从cell2 的下拉列表中选择一个值,它会覆盖cell1
即对于表GoalTbl,列cl 和d;名为cl_val 的单元格包含指向GoalTbl[cl] 的数据验证列表。另一个名为d_val 的单元格指向GoalTbl[d]
所以要获得基于cl_val 的d_val,我使用=INDEX(GoalTbl[d],MATCH(cl_val,GoalTbl[cl],0)) 之类的公式
同样根据d_val、=INDEX(GoalTbl[cl],MATCH(d_val,GoalTbl[d],0))获取cl_val的值
我不能将这些公式放在各自的单元格中,原因有两个:
- 由于每个公式都引用另一个单元格,我会得到一个循环引用
- 如果我使用下拉箭头选择一个值,它会覆盖该单元格中的公式
那么我可以通过更改数据验证指向的列表或使用 VBA 方法来获得此链接功能吗? 我想这是用于验证的动态默认公式的组合,以及基于其他 2 个区域的 1 个单元格的覆盖机制 - 我不确定如何使用公式同时处理。
【问题讨论】:
-
我不认为你可以用公式和验证来做到这一点,但你绝对可以用 VBA 做到这一点。使用 Worksheet_Change 事件,当用户更改两个单元格中的任何一个时触发它,并用公式或值本身填充另一个。您可能希望关闭错误警报,这样允许输入下拉列表中的值以外的值 - 例如公式。但是话又说回来,这将允许您的用户简单地将任何内容放入这些单元格中。有趣的问题。
标签: vba excel validation