链接2单元格数据validation列表

我在Excel中有2个内嵌数据validation列表。 两个单元格都包含指向表格2列的下拉箭头。 我想要的是,当1个单元格包含一个值时,另一个单元格包含表格中相应行的值,但包含自己的列, 反之亦然 。 所以,如果我从cell1的下拉列表中select一个值,它会覆盖cell2 ,如果我从cell2的下拉列表中select一个值,它将覆盖cell1

即对于具有列cld的表GoalTbl ; 名为cl_val的单元格包含指向GoalTbl[cl]的数据validation列表。 另一个名为d_val单元格指向GoalTbl[d]

所以为了得到一个基于cl_val我使用了一个像=INDEX(GoalTbl[d],MATCH(cl_val,GoalTbl[cl],0))

类似地,根据d_val获得cl_val的值, =INDEX(GoalTbl[cl],MATCH(d_val,GoalTbl[d],0))

我不能把这些公式放在他们各自的单元格中,原因有二:

  1. 由于每个公式都指向另一个单元格,我会得到一个循环引用
  2. 如果我使用下拉箭头select一个值,它将覆盖该单元格中的公式

那么,我可以通过更改数据validation所指向的列表来获得此链接function吗?或者使用VBA方法? 我想这是一个validation的dynamic默认公式的一个组合,并基于其他 – 2个领域,我不知道如何与公式同时处理1细胞的覆盖机制。

感谢Worksheet_Change指针,我有一个VBA方法;

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, [cl_val]) Is Nothing Then With Application.WorksheetFunction UI False [d_val] = .Index([Goaltbl[d]], .Match([cl_val], [Goaltbl[cl]], 0)) UI True End With ElseIf Not Intersect(Target, [d_val]) Is Nothing Then With Application.WorksheetFunction UI False [cl_val] = .Index([Goaltbl[cl]], .Match([d_val], [Goaltbl[d]], 0)) UI True End With End If End Sub 

其中UI只是一个Sub *来打开/closures屏幕更新和事件(我有一个Worksheet_Calculatemacros,我不想触发)

尽pipe如此,函数的方法将是很好的了解 – 我相信通过更改列表input可以做些什么


*用于参考的UI代码

 Public Sub UI(t As Boolean) Application.EnableEvents = t Application.ScreenUpdating = t End Sub