法语版Excel基于A、B列条件生成C列联动下拉菜单求助
双条件联动下拉菜单实现问题
我需要制作一个基于两条件的联动下拉菜单,所有数据都在同一张表格的3列中:先根据A列(黄色)选择,再依据B列(蓝色)筛选,最终列出C列(绿色)的对应结果,但目前无法实现第三列的联动,特此求助。
我使用的是法语版Excel,尝试用DECALER(OFFSET)、EQUIV(MATCH)和NB.SI.ENS(COUNTIFS)函数编写公式,用来确定下拉列表的数据源范围:
=DECALER(TAB_NOM_DEMO[[#En-têtes];[SUCCURSALE]];EQUIV(TABLEAU_ACC_SUCC[@SUCCURSALE];TAB_NOM_DEMO[SUCCURSALE];0); EQUIV(TABLEAU_ACC_SUCC[[#En-têtes];[TYPE DEMO]];TAB_NOM_DEMO[#En-têtes];0);NB.SI.ENS(TAB_NOM_DEMO[SUCCURSALE]; TABLEAU_ACC_SUCC[@SUCCURSALE];TAB_NOM_DEMO[TYPE DEMO];TABLEAU_ACC_SUCC[@[TYPE DEMO]]);1)
现在发现问题出在起始单元格的设置上:
TAB_NOM_DEMO[[#En-têtes];[SUCCURSALE]]
这个起始位置需要随A列、B列的选择动态变化,才能正确匹配C列的数据。不确定当前用的函数组合是否合适,希望得到建议。
更新:FILTER函数测试问题
测试FILTRE(FILTER)函数时,单个单元格中能得到正确结果,但无法应用到数据验证的下拉列表中,请问这是为什么?使用的公式如下:
=TRIER(FILTRE(TAB_NOM_DEMO[NOM DEMO]; (TAB_NOM_DEMO[SUCCURSALE]=TABLEAU_ACC_SUCC[@SUCCURSALE])* (TAB_NOM_DEMO[TYPE DEMO]=TABLEAU_ACC_SUCC[@[TYPE DEMO]])))
解决方案建议
修正DECALER函数的起始单元格
原公式的起始锚点是表头单元格,应该改为匹配A列和B列条件后的第一个C列数据行。可以用数组形式的EQUIV找到符合双条件的首个行号,再结合DECALER定位:=DECALER(TAB_NOM_DEMO[[#En-têtes];[NOM DEMO]]; EQUIV(1;(TAB_NOM_DEMO[SUCCURSALE]=TABLEAU_ACC_SUCC[@SUCCURSALE])*(TAB_NOM_DEMO[TYPE DEMO]=TABLEAU_ACC_SUCC[@[TYPE DEMO]]);0); 0; NB.SI.ENS(TAB_NOM_DEMO[SUCCURSALE];TABLEAU_ACC_SUCC[@SUCCURSALE];TAB_NOM_DEMO[TYPE DEMO];TABLEAU_ACC_SUCC[@[TYPE DEMO]]); 1)这里把起始锚点换成C列的表头
TAB_NOM_DEMO[[#En-têtes];[NOM DEMO]],用数组逻辑找到第一个符合双条件的行偏移量,再用NB.SI.ENS确定数据行数。解决FILTRE函数无法用于数据验证的问题
法语版Excel中,数据验证列表直接使用动态数组函数(如FILTRE)可能存在兼容性限制,需将公式定义为命名范围后再引用:- 打开「公式」选项卡,点击「定义名称」
- 名称设为
Liste_Demo,引用位置输入你的TRIER(FILTRE...)公式 - 在数据验证的「允许」中选择「序列」,来源输入
=Liste_Demo
注意:确保你的Excel版本支持动态数组功能(Office 365或2021及以上),否则FILTRE函数无法正常工作。
额外优化提示
- 若数据存在重复项,可在
TRIER外嵌套UNIQUE函数去重:=TRIER(UNIQUE(FILTRE(TAB_NOM_DEMO[NOM DEMO];(TAB_NOM_DEMO[SUCCURSALE]=TABLEAU_ACC_SUCC[@SUCCURSALE])*(TAB_NOM_DEMO[TYPE DEMO]=TABLEAU_ACC_SUCC[@[TYPE DEMO]])))) - 数据验证中使用动态数组时,需确保公式返回一维数组,避免出现多行多列的结果。
- 若数据存在重复项,可在
内容的提问来源于stack exchange,提问作者Amélie Robert
相关产品推荐
相关产品推荐

