我在Excel中有2个单元格数据验证列表。两个单元格都包含指向表格的2列的下拉箭头。我想要的是当1个单元格包含一个值时,另一个单元格包含表格中相应行的值,但是它自己的列,反之亦然。
因此,如果我从cell1
的下拉列表中选择一个值,则会覆盖cell2
,如果我从cell2
的下拉列表中选择一个值,则会覆盖cell1
即。对于包含GoalTbl
列和cl
列的表d
;名为cl_val
的单元格包含指向GoalTbl[cl]
的数据验证列表。另一个名为d_val
的单元格指向GoalTbl[d]
为了获得基于d_val
的{{1}}我使用cl_val
同样根据=INDEX(GoalTbl[d],MATCH(cl_val,GoalTbl[cl],0))
获取cl_val
的值,d_val
由于以下原因,我无法将这些公式放在各自的单元格中:
我可以通过更改数据验证所指向的列表 - 或使用VBA方法来获得此链接功能吗? 我想这是一个动态默认公式验证和一个单元格覆盖机制的组合 - 基于另一个 - 2个区域我不知道如何同时处理公式。
答案 0 :(得分:2)
感谢指向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 *来打开/关闭屏幕更新和事件(我在其他地方有一个Worksheet_Calculate
宏,我不想触发)
仍然,一个函数方法很高兴知道 - 我确信可以通过更改列表输入来完成某些事情
*用于参考的UI代码
Public Sub UI(t As Boolean)
Application.EnableEvents = t
Application.ScreenUpdating = t
End Sub