Excel 2003组合框/验证数据列表值和标签

Excel 2003组合框/验证数据列表值和标签,excel,ms-office,excel-2003,office-2003,Excel,Ms Office,Excel 2003,Office 2003,我无法找到这些信息:是否可以在这两种类型的列表中显示标签而不是实际值?当然,当选择标签时,单元格或组合框(作为表单控件)的值将获得实际值 例如: *资料 产品A 10 产品B 11 产品C 22 组合框显示:产品A、产品B和产品C 如果我选择A,我得到10的值,B是11的值,C是22的值 先谢谢你 Miloud B.实现这一点的典型方法是创建一个查找表。有一个名为VLOOKUP(部分名称)的函数,您可以在公式中使用它来检索值。我在工作中做了类似的事情,在一个单独的电子表格中创建了一个查找表,然后

我无法找到这些信息:是否可以在这两种类型的列表中显示标签而不是实际值?当然,当选择标签时,单元格或组合框(作为表单控件)的值将获得实际值

例如: *资料 产品A 10 产品B 11 产品C 22

组合框显示:产品A、产品B和产品C 如果我选择A,我得到10的值,B是11的值,C是22的值

先谢谢你


Miloud B.

实现这一点的典型方法是创建一个查找表。有一个名为VLOOKUP(部分名称)的函数,您可以在公式中使用它来检索值。我在工作中做了类似的事情,在一个单独的电子表格中创建了一个查找表,然后在主表格中调用了查找函数


您也可以使用宏,但在我看来,对于当前的问题,这太麻烦了。

数据验证:每行不能有两个值。可以使用查找表将一个值转换为另一个值。或者,您可以组合“ProductA_10”等值,并使用公式在需要的地方提取“10”

表单组合框:它也有有限的选项,并且不能提供DV所能提供的任何东西

工具箱组合框:这可以做任何你想做的事情。您可以将ColumnCount属性设置为2,将BoundColumn属性设置为2,将ColumnWidths属性设置为类似“1;0”的值以隐藏第二列。如果我有A1:A3中的ProductA-C和B1:B3中的10-12,那么我会在标准模块中使用这样的代码来填充组合框

Sub LoadCombobox()

    Dim rCell As Range

    For Each rCell In Sheet1.Range("A1:A3").Cells
        Sheet1.ComboBox1.AddItem rCell.Value
        Sheet1.ComboBox1.List(Sheet1.ComboBox1.ListCount - 1, 1) = rCell.Offset(0, 1).Value
    Next rCell

End Sub
并在工作表的模块中编写如下代码,将值放入单元格(本例中为F1)


每当选择组合框中的新值时,F1都会更新。我们可以使用组合框的Value属性,因为我们将BoundColumn属性设置为具有所需值的列。

谢谢您的提示。尽管如此,这是我想要避免的解决方案,因为它不适合我的情况。但如果你说可以使用宏,你会怎么做?因为我真的不明白,我的意思是,使用VBA是可能的。点击Alt+F11,进入Visual Basic环境。我相信有一种方法可以通过编程实现。例如,当有人选择“数据产品A”时,VBA中可以有一个钩子,用数值填充相应的单元格。但是,查找表似乎是合适的解决方案;相关单元格可以用查找公式预先编程。好的,明白了。我试图避免查找表,因为我有描述字段,但现在我想我该怎么做。我将使用ID描述作为项目,然后每当做出选择时,我都会解析该值以提取ID。谢谢,伙计;)
Private Sub ComboBox1_Change()

    Me.Range("F1").Value = Me.ComboBox1.Value

End Sub