excel下拉列表联动_动态相关Excel下拉列表

excel下拉列表联动

With dependent data validation, you can make one drop down list depend on the selection in another cell. For example, select Vegetables as a category in column B, and you'll see a drop down list of vegetables in column C.

使用相关数据验证 ,您可以根据另一个单元格中的选择创建一个下拉列表。 例如,在B列中选择蔬菜作为类别,您将在C列中看到蔬菜的下拉列表。

datavaldependdynamic01

间接问题 (Problems With INDIRECT)

This technique uses the INDIRECT function, to return the range with the name Vegetables. It works well with a static named range, but INDIRECT doesn't work with a dynamic range.

该技术使用INDIRECT函数返回名称为Vegetables的范围。 它适用于静态命名范围,但INDIRECT不适用于动态范围

For example, in the workbook shown below, there is a dynamic range named NumList, with the formula:

例如,在下面显示的工作簿中,有一个动态范围名为NumList ,其公式为:

=Admin!$A$1:INDEX(Admin!$A:$A,COUNTA(Admin!$A:$A))

=管理员!$ A $ 1:INDEX(管理员!$ A:$ A,COUNTA(管理员!$ A:$ A))

You can SUM the dynamic named range:

您可以对动态命名范围求和:

=SUM(NumList)

= SUM(NumList)

for the correct result of 10.

以获得正确结果10。

datavaldependdynamic02

However, if you use the INDIRECT function, the result is a #REF! error. =SUM(INDIRECT(C4))

但是,如果使用INDIRECT函数,则结果为#REF! 错误。 = SUM(INDIRECT(C4))

datavaldependdynamic03

相关数据验证解决方法 (Dependent Data Validation Workaround)

Instead of using dynamic ranges with dependent data validation, you can use a named starting cell (Vegetables) and named column (VegetablesCol).

您可以使用命名的起始单元格(Vegetables)和命名的列(VegetablesCol),而不是使用动态范围进行相关数据验证。

datavaldependdynamic04

Then, refer to those named ranges in the dependent data validation formula.

然后,请参考相关数据验证公式中的那些命名范围。

=OFFSET(INDIRECT($B2),0,0,COUNTA(INDIRECT(B2&"Col")),1)

= OFFSET(INDIRECT($ B2),0,0,COUNTA(INDIRECT(B2&“ Col”)),1)

You can see this example, and a formula that substitutes invalid characters, on the Contextures website, dependent data validation page. ___________

您可以在Contextures网站的相关数据验证页面上看到此示例以及一个替换无效字符的公式。 ___________

翻译自: https://contexturesblog.com/archives/2011/05/20/dynamic-dependent-excel-drop-downs/

excel下拉列表联动

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用原生的 HTML、JavaScript 实现省市下列表联动。具体步骤如下: 1. 在 HTML 中添加两个 select 元素,分别用于显示省份和城市列表,例如: ```html <label for="province">省份:</label> <select id="province"></select> <label for="city">城市:</label> <select id="city"></select> ``` 2. 定义一个包含省份和城市信息的 JavaScript 对象,例如: ```javascript const cityData = { "北京市": ["东城区", "西城区", "朝阳区", "海淀区", "丰台区", "石景山区", "通州区", "昌平区", "大兴区", "房山区", "门头沟区", "顺义区", "平谷区", "怀柔区", "密云区", "延庆区"], "上海市": ["黄浦区", "卢湾区", "徐汇区", "长宁区", "静安区", "普陀区", "闸北区", "虹口区", "杨浦区", "宝山区", "闵行区", "嘉定区", "松江区", "金山区", "青浦区", "奉贤区", "崇明区"], // 其他省市的城市信息 // ... }; ``` 3. 在 JavaScript 中添加事件监听器,监听省份 select 元素的 change 事件,当省份发生变化时,动态生成对应的城市列表,例如: ```javascript const provinceSelect = document.getElementById("province"); const citySelect = document.getElementById("city"); provinceSelect.addEventListener("change", function() { const province = provinceSelect.value; // 获取选中的省份 const cities = cityData[province]; // 获取该省份对应的城市列表 // 清空城市列表 citySelect.innerHTML = ""; // 动态生成城市选项 for (let i = 0; i < cities.length; i++) { const option = document.createElement("option"); option.text = cities[i]; citySelect.add(option); } }); ``` 完整的 HTML 和 JavaScript 代码如下: ```html <label for="province">省份:</label> <select id="province"> <option value="北京市">北京市</option> <option value="上海市">上海市</option> <!-- 其他省份的选项 --> </select> <label for="city">城市:</label> <select id="city"></select> <script> const cityData = { "北京市": ["东城区", "西城区", "朝阳区", "海淀区", "丰台区", "石景山区", "通州区", "昌平区", "大兴区", "房山区", "门头沟区", "顺义区", "平谷区", "怀柔区", "密云区", "延庆区"], "上海市": ["黄浦区", "卢湾区", "徐汇区", "长宁区", "静安区", "普陀区", "闸北区", "虹口区", "杨浦区", "宝山区", "闵行区", "嘉定区", "松江区", "金山区", "青浦区", "奉贤区", "崇明区"], // 其他省市的城市信息 // ... }; const provinceSelect = document.getElementById("province"); const citySelect = document.getElementById("city"); provinceSelect.addEventListener("change", function() { const province = provinceSelect.value; // 获取选中的省份 const cities = cityData[province]; // 获取该省份对应的城市列表 // 清空城市列表 citySelect.innerHTML = ""; // 动态生成城市选项 for (let i = 0; i < cities.length; i++) { const option = document.createElement("option"); option.text = cities[i]; citySelect.add(option); } }); </script> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值