数据validation表的替代,或者可能是我正在尝试做的一个修复

背景:

我有一个包含数据validation表的列表的工作表,我们select填写一个过程列表。

为了限制select的数量,我有两个(2)数据validation表并排排列,所以你select一个Piece Class和Piece。

当前的数据validation表包括以下用于select的公式(基于命名范围):

=IF(B35=A$1518,a,IF(B35=A$1519,b,IF(B35=A$1520,c_,IF(B35=A$1521,d,IF(B35=A$1522,e,IF(B35=A$1523,f,IF(B35=A$1524,g,IF(B35=A$1525,h,IF(B35=A$1526,i,IF(B35=A$1527,j,IF(B35=A$1528,k,IF(B35=A$1529,l,IF(B35=A$1530,m,IF(B35=A$1531,n,"")))))))))))))) 

我使用了命名的范围,如a,b,d,这样我就可以尽量使用小空间。

引用名称所在的表格是这样设置的:

 Header1 | Header2 Cat Animal Dog Animal Cow Animal Rat Animal Jeep Vehicle Car Vehicle 

指定的范围是指动物或汽车的types,其中$ A1518参考等是专门针对动物,车辆等的列表。


问题:

我被要求进一步分开名单,这将导致命名范围的两倍。 我正在打数据validation表的最大值(256个字符)。

由此产生的分离将基于一个标准(真/假),如:

 =if($B$20="True",If(_old_formula_),If(_new_formula_)) 

如果旧公式是“ 背景”部分中的公式,新公式将具有所有必须创build的新范围。


题:

在单元格中使用数据validation表是否有其他select,导致类似的function(下拉菜单)? 经过一番search,我一直无法find一个替代scheme。

如果没有,有没有人有改善我目前使用的if语句的string的build议?

在使用1518美元,1519澳元等的情况下,我也可以制作命名范围,但是这不会提供足够的额外空间来将可用范围的数量翻倍。

您可以从VBA访问.validation。 在相应的工作表代码中,您可以添加一个子例程Private Sub Worksheet_SelectionChange(ByVal Target As Range)设置此项以监视启动列车的初始单元格更改,并为每行下一行执行以下代码版本。 然后,您可以使用一个数据工作表。

  Dim ary As Variant ary = Array("Value1", "Value2", "Value3") 'populate this array however you want. With ActiveSheet.Cells(1, 1).Validation .Delete .Add Type:=xlValidateList, Formula1:=Join(ary, ",") .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With 

另外任何人要走这条路线,我build议这个gem。 我没有testing过,但看起来很有希望。 http://www.jkp-ads.com/articles/catchpaste.asp?AllComments=True