excel - 一个单元格可以同时进行数据验证和vlookup吗?

标签 excel vba

基本上我有 2 个单元格。一种是产品描述,一种是产品编号。按照现在的方式,产品描述是经过数据验证的,产品编号是通过描述查找的。

我想要发生的是能够根据产品编号或产品描述进行查找,这样基本上如果我从下拉列表中选择产品编号,则会查找产品描述,如果我从下拉列表中选择产品描述下拉列表可查找产品编号。

这可能吗,还是我的想法是错误的?

最佳答案

回答一个老问题,没有人准确地回答过...希望这也对其他人有帮助。另外,请引用代码中的注释。

这不能通过 Excel 公式和验证来完成,因为它会创建循环引用 [并不是说您无法更改循环迭代的计数,但仍然...]

在 VBA 中要简单得多...这是任何想要使用它的人的代码..

Private Sub Worksheet_Change(ByVal Target As Range)
    Const sNumRng As String = "$A$1"
    Const sDescRng As String = "$B$1"
    '# both sListRngNum & sListRngDesc must be of the same size
    Const sListRngNum As String = "$K$1:$K$4"
    Const sListRngDesc As String = "$L$1:$L$4"

    '# EnableEvnent should be disabled first
    '# because the code will trigger it again
    '# by changing the next cell value
    Application.EnableEvents = False

    If Target.Address = sNumRng Then
       Range(sDescRng).Value = WorksheetFunction.Index(Range(sListRngDesc), _
       WorksheetFunction.Match(Target.Value, Range(sListRngNum), 0))
    ElseIf Target.Address = sDescRng Then
       Range(sNumRng).Value = WorksheetFunction.Index(Range(sListRngNum), _
       WorksheetFunction.Match(Target.Value, Range(sListRngDesc), 0))
    End If
    Application.EnableEvents = True
End Sub

将此代码粘贴到您要实现此功能的工作表的工作表模块中。 根据您的需要更改范围地址。另外,这可以通过动态数组、集合等来完成,但这很简单:)

关于excel - 一个单元格可以同时进行数据验证和vlookup吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15441992/

相关文章:

vba - 工作簿加载完成后运行子例程吗?

excel - 如果,那么,重复 Excel 公式

vba - 来自网页的消息。 : 1行出现堆栈溢出

excel - 如何在 VBA 中调暗和设置变量工作簿名称?

Java 流将 excel CSV 收集到基于列的总和过滤的列表中

VBA Excel - .Window 无法识别打开的 Excel 窗口

excel - 在 Excel 中交替着色行组

excel - 顺序无关紧要的VBA循环

excel - 1004错误:未找到任何单元格,容易解决吗?

vba - 在 VBA 中比较字符串的最佳方法?