我想在excel中创建2个相关的下拉列表,第一个下拉值决定了第二个下拉列表必须显示的值。
将以下OFFSET公式用于第二个下拉值,以动态填充。
= OFFSET($ B $ 2,MATCH($ G $ 3,$ B $ 3:$ B $ 17,0),1,COUNTIF($ B $ 3:$ B $ 17,$ G $ 3),1)
。我还准备了一个示例文件,展示了我使用的公式。
当我选择第一个下拉值时,第二个下拉列表将得到更新。但是,当我在第一个下拉列表中选择另一个值时,第二个列表不会立即显示这些值。
示例文件链接-https://drive.google.com/file/d/1rwt6B-INgrQ0NgxIl-Nc8JeoGziBaiL2/view?usp=sharing
答案 0 :(得分:2)
现在,这就是我所说的具有挑战性的要求。
我们将使用秘密的Evaluate
公式来实现这一目标。
免责声明:
解决方案:
让我们创建一个公式,该公式返回我们要在下拉菜单中使用的范围的地址。您可以将其粘贴为I3。
=ADDRESS(ROW(OFFSET($C$2,MATCH($G3,$B$3:$B$17,0),0)), COLUMN($C$2)) & ":" & ADDRESS(ROW(OFFSET($C$2,MATCH($G3,$B$3:$B$17,0)+COUNTIF($B$3:$B$17,$G3)-1,0)),COLUMN($C$2))
如果我的法语Excel没错,则应该获取在G3中放置的状态的所有定义的地址。将公式向下扩展几行,您将看到它始终与G4,G5等匹配。
是时候定义一个名称了(菜单公式>名称管理器>新建),我们将其称为DynamicRange。
首先,我建议将范围更改为工作表(窗口中的“ Dropdown”)。
接下来,将我们之前尝试过的公式放在EVALUATE
中。
=EVALUATE(ADDRESS(ROW(OFFSET($C$2,MATCH($G3,$B$3:$B$17,0),0)), COLUMN($C$2)) & ":" & ADDRESS(ROW(OFFSET($C$2,MATCH($G3,$B$3:$B$17,0)+COUNTIF($B$3:$B$17,$G3)-1,0)),COLUMN($C$2)))
=DynamicRange
答案 1 :(得分:-1)
我看到了您要完成的工作(获取第二个单元格值以自动更新到第一个列表项),但是我认为不使用VBA是不可能的。
我的理解是“数据验证”仅验证单元格中的数据,而不会更改现有值。
如果您想更改现有值,那么我将研究VBA。