【问题标题】:How to use If and Indirect combination in excel如何在excel中使用if和indirect组合
【发布时间】:2015-10-13 13:14:18
【问题描述】:

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

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

第 1 列 //用于下拉菜单 1

    a
    ab
    abc
    abcd
    abcde
    abcdf

当我在 column1 中选择“ab”时,它会显示以下内容

Column 2 //用于下拉 2

    ab
    1
    2

    4
    5

    7

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

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

1 2 4 5 7 在下拉菜单中

提前致谢

【问题讨论】:

  • 你能显示一些你的代码吗?
  • @EngJon 添加了详细信息。
  • 这实际上与 vba 无关。但是,您可以在 vba 中实现这一点(通过创建一个新范围,仅包含原始范围中的非空单元格并将下拉框的源定义为新范围)
  • dropdown2 的数据来自哪里?简短的回答是 - 您需要对第 2 列中的数据进行排序以删除空白。如果您的源数据无法做到这一点,那么您可以创建一个中间列来创建未排序数据的排序列表,然后让您的间接函数引用它。另外 - 单元格 A1 中有什么?

标签: vba excel excel-formula excel-2007


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-12
    • 1970-01-01
    相关资源
    最近更新 更多