如何设置显示值但是选择密钥的下拉列表?

时间:2015-11-24 18:34:56

标签: excel

在Excel中,我有一个定义的名称范围,其值如下:

+----------+------+
| BodyPart | Code |
+----------+------+
| Head     |    1 |
| Torso    |    2 |
| Abdomen  |    3 |
| Ankle    |    4 |
+----------+------+

由于代码难以记忆,我尝试设置数据验证以在下拉列表中显示BodyParts,并在选中后,在电子表格中显示代码。

这是如何完成的?

1 个答案:

答案 0 :(得分:1)

这是一个解决您问题的vba解决方案(通过链接解释如何在需要时执行各种操作):

  1. 将表格放在文件
  2. 中的单独表格中
  3. Define a Name将BodyPart列设为BodyPart(将范围设置为工作簿级别)
  4. 将整个表(两列)的名称定义为BodyPartCode(将范围设置为工作簿级别)
  5. 将每个单元格的数据验证设置为List with Source =BodyPart
  6. 将下面的代码放在包含数据的工作表的Worksheet Module中。
  7. 每次用户更改工作表上的单元格值时,下面的代码都会运行。如果更改的单元格与DropDown列表位于同一列中,则代码将根据输入的正文部分查找正文部分代码,然后从单元格中删除数据验证,以便可以在单元格中输入代码而不会破坏身体部位的验证下拉。

    Private Sub Worksheet_Change(ByVal Target As Range)
    
    With Target
    
        If .Column = 6 Then 'assumes drop-downs listed in column F, change as needed
    
            Dim sPart As String, sCode As String
            sPart = .Value2
            sCode = Application.WorksheetFunction.VLookup(sPart, Range("BodyPartCode"), 2, 0)
    
            Application.EnableEvents = False
    
            .Validation.Delete
    
            .Value = sCode
    
            Application.EnableEvents = True
    
        End If
    
    End With
    
    End Sub