数据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