2014-02-14 73 views
0

我想在单个单元格中创建一个用于数据验证的列表。来自单个单元格的Excel数据验证列表

例如:

单细胞:

| 1-3,6,8 | 

数据验证列表:

1 

2 

3 

6 

8 
+0

你能否澄清一下,你有一个单元格,说'B1',值''| 1-3,6,8 |',然后,使用'B1',你需要为另一个单元创建下拉菜单,比如'A1'? –

+0

如果您将值列表中的数据验证分配给特定单元格,则在选定该特定单元格时,会显示一个下拉列表,并显示之前选择的可能值。 而不是一个单元格范围内的列表,我想创建一个相同的列表,但从一个单元格的值,例如,1-3,6,8,这将创建一个包含值1,2,3的列表,6,8 – user3297530

回答

1

呦可以试试这个:

Sub DataVal() 
    Dim x As String, v, v1, i As Integer, j As Integer, s As String 
    x = Range("C1") 
    v = Split(x, ",") 
    For i = LBound(v) To UBound(v) 
     If InStr(v(i), "-") <> 0 Then 
      v1 = Split(v(i), "-") 
      For j = v1(LBound(v1)) To v1(UBound(v1)) 
      s = s & j & "," 
      Next 
     Else 
      s = s & v(i) & "," 
     End If 
    Next 
    s = Left(s, Len(s) - 1) 
    With Range("D1").Validation 
     .Delete 
     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=s 
    End With 
End Sub 

我假设你要应用数据验证D1细胞并获得C1该数据验证值,随意改变

0

编写自定义VBA函数。很伪代码如下:

function validateCell(strValues as string, rngValid as range) as boolean 
    validateCell = true 'will return true unless the following loop finds an invalid value 
    for each value in strValues 'this will require some parsing of strValues parameter 
    if value is not in rngValid 
     then validateCells = False 
     exit function 
    end if 
    next value 
end function 
+0

这个代码你给我,只会验证值,我很抱歉我没有正确解释我自己,我想要的不仅是验证,而且还创建一个下拉列表单元格单击时唯一可能的值。那可能吗? – user3297530

+0

Ohhhh我明白了。你想把1-3,6,8放在一个单元中作为验证列表吗?编写一个从1到循环的函数,并分析输入单元。粘贴属于您的验证范围的值。如果所有输入单元格都使用相同的规则,那么您就是黄金。 –

相关问题