如何在Excel

时间:2015-07-23 09:50:50

标签: excel vba excel-vba excel-formula excel-2007

我有两个依赖的下拉框。我使用了INDIRECT函数来填充第二个下拉列表。现在查询是,第二个下拉列表的内容中有一些空格,我想删除它们。所以想到一次使用If和Indirect函数。是否可以同时使用这两种方法。如果是,请说明。

第二个下拉框的数据验证为=INDIRECT(SUBSTITUTE(A1," ",""))

第1列//用于下拉列表1

    a
    ab
    abc
    abcd
    abcde
    abcdf

当我选择' ab'在column1中,它显示以下

第2栏//用于下拉2

    ab
    1
    2

    4
    5

    7

上面的1,2,4,5,7将在下拉列表中,其中包含空格,如上所示。

我已使用=INDIRECT(SUBSTITUTE(A1," ",""))进行第二次下拉。现在我想检查单元格的空白,我不想显示空白单元格,即我只想显示

1 2 4 5 7下拉

提前致谢

1 个答案:

答案 0 :(得分:0)

如果使用“数据验证”下拉列表,则存在一些限制:它可以使用指向范围的链接,或项目列表(字符串),或返回范围的公式(如OFFSET,INDEX等)。 ),但不是数组。 要从列表中删除空格,可以使用返回值数组的公式,但不能在“数据验证”下拉列表中使用该公式。 因此,如果无法从列表中排序或删除空白单元格,那么yppu应该查看VBA,您可以在其中生成下拉列表作为字符串:

TargetRange.Validation.Delete
TargetRange.Validation.Add Type:=xlValidateList, Formula1:=Join(Arr, ",")

其中 Arr 是您的下拉列表的值数组,而第一个下拉列表中的事件生成的 Arr (您可以使用Worksheet_Change事件)。