基于相邻列的Excel动态数据验证

时间:2019-02-20 22:15:50

标签: excel vba validation

我正在尝试组合一些VBA代码,该代码将根据旁边的单元格的值对单元格应用数据验证(创建要使用的列表)。我已经在Google Spreadsheet中使用了此功能,我刚刚对其进行了链接,但是我对VB一无所知,因此我为此感到困惑。

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

正在发生的事情的基础是:

  • 确定有效性的列的标题称为“属性组”。我想避免固定位置,所以我使用标题名称而不是列索引
  • 当“属性组”中的值更改时,与之相邻的单元格将创建一个下拉列表,并带有与“属性组”中的值相对应的值。

请查看linked spreadsheet,以了解此功能的实际作用。我正在尝试在Excel中尽可能地做到这一点。

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

2 个答案:

答案 0 :(得分:0)

不幸的是,我没有时间完全按照我的意愿来工作。

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

  

插入>表格

     

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

     

删除重复项以删除大多数空白单元格,然后根据需要调整表格大小以消除其他空白单元格

然后,由于我的“属性组”值包含空格和特殊字符,因此我在单元格E3中使用= indirect()和replace()进行了数据验证。

  

数据>数据验证

     

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

     

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

然后我复制单元格E3并一直向下粘贴。 这种方法解决了我当前的问题,但无法实现我希望实现的灵活性。

答案 1 :(得分:-1)

(编辑添加项-投下赞成票) 在评论中回答,但也添加了一个答案以从未回答的问题列表中消除此问题...... (编辑结束)

因此从未回答的问题中将其删除.....对属性组中的单元格范围使用命名范围(例如“ MyDataRng”),然后在列表类型数据验证中输入= MyDataRng