链接2单元内数据验证列表

链接2单元内数据验证列表

问题描述:

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

即用于表GoalTbl与列cld;名为cl_val的单元格包含指向GoalTbl[cl]的数据验证列表。到GoalTbl[d]

和所谓的d_val点的另一种细胞获得基于cl_vald_val我使用像=INDEX(GoalTbl[d],MATCH(cl_val,GoalTbl[cl],0))

同样的公式,我们将根据d_valcl_val值,=INDEX(GoalTbl[cl],MATCH(d_val,GoalTbl[d],0))

我不能将这些公式放在它们各自的单元中有两个原因:

  1. 因为每个公式引用其他单元格,如果我使用的下拉箭头,选择一个值,我会得到一个循环引用
  2. ,它覆盖公式在该单元格

所以我可以用得到这个链接功能更改数据验证指向的列表 - 或使用VBA方法? 我想这是一个验证的动态默认公式的组合,以及基于其他2个区域的1个单元的覆盖机制,我不知道如何与公式同时处理。

+1

我不认为你可以通过公式和验证来做到这一点,但你绝对可以用VBA做到这一点。使用Worksheet_Change事件,当用户更改两个单元格中的任意一个时触发它,并用一个公式或值本身填充另一个事件。您可能需要关闭错误提醒,这样可以输入除下拉列表以外的值 - 例如,公式。但是,再次,这将允许您的用户只需在这些单元中放入任何东西。有趣的问题。 – vacip

感谢您对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简直是一个子*开启/关闭屏幕更新和事件(我有我不想引发了Worksheet_Calculate宏别处)

尽管如此,函数的做法将是不错知道 - 我敢肯定的东西可以通过改变列表输入


* UI代码为参考进行

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