use*_*973 6 validation excel dynamic excel-2007 named-ranges
我需要两个动态下拉列表来进行数据验证.一个包含可供选择的唯一大陆列表,然后是第二个列表,它是基于所选大陆的动态生成的国家子集.数据没有任何特定顺序:
A B
---+--------------------
1 | Continent Country
2 | Africa Algeria
3 | Asia China
4 | Africa Ethiopia
5 | Europe France
6 | Europe Germany
7 | Asia India
8 | Europe Italy
9 | Asia Japan
10 | Europe Poland
11 | Africa South Africa
12 | Europe Spain
我已成功创建了第一个下拉列表,使用隐藏列生成唯一的大陆列表,然后将它们关联为命名范围.然而,那部分已经完成了
如何根据第一个列表中选择的Continent关联创建第二个动态生成的筛选列表(最好在列表中没有任何间隙)?
我正在消化的实际数据是数千个数据点,所以性能是一个问题,如果可能的话我宁愿不使用VBA.
编辑:通过更多搜索,我找到一个有用的链接,为我提供了这个公式:IFERROR(INDEX($ A $ 2:$ A $ 100,小(IF($ B $ 2:$ B $ 100 ="是", ROW($ A $ 2:$ A $ 100)-ROW($ A $ 2)+1),行($ A $ 2:$ A2))), "")
它更接近,但它不起作用,因为我需要将这些放在我的工作表中的单独列中,我需要动态下拉列表的每一行,而且我不确定过滤列表的大小.
有没有办法直接在命名范围内执行此操作?
如果您准备应用一系列命名范围(在示例中,B:G 的占用部分),则使用允许:列表和源进行数据验证:=INDIRECT(INDEX($1:$1,MATCH(I2,A$1:A$7,0)))可能适合 J 列中的条目:

尝试澄清:
\n\n通常,从内到外理解公式更容易,因此首先=MATCH:这会查找 A1:A7 列表中,0I2 中输入的精确(即 )值的位置。对于S.AMERICA——不错的选择!:-) - 这恰好是最后一个(第七个)。然后将该结果馈送到=INDEX部件,以确定哪个列号是相关的(用于按国家/地区进行验证)。对于 Excel,ColumnG 是第七个。
我对公式并不完全传统,不关心具有多个单行/列 \xe2\x80\x93 的数组,部分原因是为了约定验证和查找列表通常垂直排列而不是水平排列(例如,VLOOKUP 比 HLOOKUP 应用得更频繁),部分原因是我们更习惯于查看列标签而不是行标签,等等。 \xe2\x80\x93 的效果与电子表格通常允许长度大于它们很宽(例如 16,384 列,但 1,048,576 行),部分是为了我的答案中的图像长宽比。
\n\n替代布局虽然在实践中可能稍微不太方便(例如,用于设置命名范围),但可能有助于我的解释尝试:
\n\n下图左图:将国家/地区数据转换为更传统的 vlookup 布局(然后也可以使用以下命令删除行)Continents),验证公式为:
=INDIRECT(INDEX(A$1:A$6,MATCH(A8,A$1:A$6,0))) \nRun Code Online (Sandbox Code Playgroud)\n\n(为此,我必须移动 \xe2\x80\x98trigger cell\xe2\x80\x99 I2 等,因为其他数据现在需要该单元 \xe2\x80\x93 我选择了 A8 等)。
\n\n下右图:保留 \xe2\x80\x98trigger cell\xe2\x80\x99 与左图一样,并取消Continents,验证公式为:
=INDIRECT(INDEX(C$1:H$1,MATCH(A8,C$1:H$1,0)))\nRun Code Online (Sandbox Code Playgroud)\n\n
| 归档时间: |
|
| 查看次数: |
25737 次 |
| 最近记录: |