【问题标题】:Excel Dynamic Data Validation Based on Adjacent ColumnExcel基于相邻列的动态数据校验
【发布时间】:2019-02-22 18:29:01
【问题描述】:

我正在尝试拼凑一些 VBA 代码,这些代码将根据旁边单元格的值将数据验证(创建要使用的列表)应用于单元格。我有这个功能在我刚刚链接的Google Spreadsheet 中工作,但我对 VB 一无所知,所以我正在努力解决这个问题。

电子表格的布局有点奇怪,因为需要此验证的工作表具有从第 2 行开始的行标题。

基本情况是:

  • 确定验证的列标题称为“属性组”。我想避免需要固定位置,所以我使用标题名称而不是列索引
  • 当“属性组”中的值发生变化时,右侧与其相邻的单元格将创建一个下拉列表,其中的值对应于“属性组”中的值

请查看linked spreadsheet 以了解此功能的实际应用。我试图在 Excel 中尽可能接近这一点。

编辑:主要问题是:如何在 Microsoft Excel 中创建动态数据验证?

【问题讨论】:

  • 这与 google-apps-script 无关,所以我删除了标签。
  • 对属性组中的单元格范围使用命名范围(例如“MyDataRng”),然后在列表类型数据验证中输入 =MyDataRng
  • @Cooper 感谢您的编辑。我不确定是否应该使用该标签,但认为添加它更安全。
  • @user1302114 我不太清楚您所说的“...在列表类型数据验证中...”是什么意思。
  • 在 excel 中,您可以将数据验证添加到任何单元格,您可以告诉它使用一系列单元格作为有效条目列表...它在数据选项卡/菜单上,,,您的名字范围因为我发现在验证表单/窗口/框/字段中输入更容易...... Google Excel 数据验证列表

标签: excel vba validation


【解决方案1】:

很遗憾,我没有时间完全按照我的意愿工作。

我现在的解决方案是为每个列创建表,这些表的数据与相应的“属性组”相对应。

插入 > 表格

重命名表以匹配相应的“属性组”值,删除空格和特殊字符

删除重复项以删除大多数空白单元格,然后在需要时调整表格大小以删除任何其他单元格

然后我使用 =indirect() 和替代() 在单元格 E3 中添加数据验证,因为我的“属性组”值包含空格和特殊字符。

数据 > 数据验证

在“设置”下,我在“允许”部分使用了“列表”

来源是 =INDIRECT(SUBSTITUTE(SUBSTITUTE($D3," ",""),"&","And"))

然后我复制了单元格 E3 并一直向下粘贴。 此方法解决了我当前的问题,但无法达到我希望达到的灵活性水平。

【讨论】:

    【解决方案2】:

    (编辑添加 - 以下投票) 在 cmets 中回答,但还添加了一个答案以从未回答的问题列表中消除此问题.....不寻找布朗尼点 (编辑结束)

    这样就可以从未回答的问题中删除.....使用命名范围(例如“MyDataRng”)作为属性组中的单元格范围,然后在列表类型数据验证中输入 =MyDataRng

    【讨论】:

    • 所以你提交答案不是为了回答问题,而是为了防止它被实际回答?
    • 不,我最初通过 cmets 回答了这个问题,然后添加了一个答案
    • 你回答了“一个”问题,但不是我的问题。
    • 我回答的问题是您发布的第一行 ..“我正在尝试拼凑一些 VBA 代码,这些代码将根据它旁边的单元格的值”这正是我所描述的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 2017-12-30
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多