基于单元格值的Data Validation需求:跨工作表动态关联验证
实现依赖单元格值的动态数据验证
适用Excel 365/2021(支持动态数组)
- 选中Conversion工作表中需要设置数据验证的C列单元格(比如C2:C100)
- 打开「数据验证」对话框,选择「允许」→「序列」
- 在「来源」中输入公式:
(注:把=FILTER(Inbound!$C$2:$C$100, Inbound!$B$2:$B$100=Conversion!$A2)$C$2:$C$100和$B$2:$B$100替换成你实际的数据范围,$A2是当前行对应A列的单元格,保持相对引用) - 勾选「忽略空值」,点击确定。此时C列的下拉选项会自动匹配对应行A列选中的B列代码对应的C列值。
适用旧版Excel(不支持动态数组)
- 定义动态名称
- 点击「公式」→「定义名称」,名称设为
MatchingCodes,引用位置输入数组公式:
输入完成后按Ctrl+Shift+Enter确认数组公式。=INDEX(Inbound!$C$2:$C$100, SMALL(IF(Inbound!$B$2:$B$100=Conversion!$A2, ROW(Inbound!$C$2:$C$100)-ROW(Inbound!$C$2)+1), ROW(INDIRECT("1:"&COUNTIF(Inbound!$B$2:$B$100, Conversion!$A2)))))
- 点击「公式」→「定义名称」,名称设为
- 设置数据验证
- 选中Conversion工作表的C列目标单元格,打开「数据验证」→「序列」
- 在「来源」中输入
=MatchingCodes,勾选「忽略空值」后确定。
注意事项
- 避免使用整列引用(如
$C:$C),改用实际数据范围可提升计算效率 - 如果Inbound工作表存在空行,可在公式中加入排除空值的条件,比如在FILTER里追加
*Inbound!$C$2:$C$100<>""
内容的提问来源于stack exchange,提问作者DSPINK95
相关产品推荐
相关产品推荐

