excel - 使用带有数组公式的 if 语句命名范围以用于依赖下拉列表

标签 excel excel-formula

找了一会儿就懵了……

我有一个包含以下项目的电子表格:

   A              B                  C
+------+----------------------+--------------+
| Code |         Desc         |     Type     | 1
+------+----------------------+--------------+
|    1 | Main item            | Activity     | 2
|  1.1 | Sub item             | Sub-activity | 3
|  1.2 | Another sub item     | Sub-activity | 4
|    2 | Another main item    | Activity     | 5
|  2.1 | Yet another sub item | Sub-activity | 6
+------+----------------------+--------------+

我想创建一个基于 Activity 的下拉列表。我可以在一个典型的单元格中执行此操作(使用 ctrl + shift + enter 进行数组公式):
={if(c2:c6="Activity",a2:a6,"")}

但我不知道如何将该公式正确放入命名范围。当我按 ctrl + shift + enter 时,没有出现大括号。当它没有大括号时,它似乎也不起作用(它将值显示为 {...})。

有没有办法使这项工作?

提前致谢

最佳答案

最后,通过命名范围是不可能的。我最终根据 blog page 做了一个带有偏移量和两个枢轴的依赖下拉列表的变体。来自 Darren 的上述评论以及 this link .可能有点矫枉过正,但至少我知道我是怎么做到的。

设置第一个下拉数据源和下拉数据验证

  • 对于第一个列表,我从下拉数据源中创建了一个数据透视表,其中包含“类型”列和计数“类型”的值(这些值并不相关,但我发现只知道预期的任何元素很有用对于以后的依赖项)。此枢轴位于新工作表上的标准默认枢轴位置,其中标题行从 A3 开始。默认情况下,使用枢轴还会按字母顺序对其进行排序(我想要的)。翻转所有总列。
  • 然后,我使用以下公式创建了一个命名范围(“costCategory”):
    =OFFSET('PivotSheet'!$A$4,0,0,COUNTA('PivotSheet'!$A$4:$A$100),1)
    这基本上列出了项目并删除了任何空白。它不像我想要的那样动态,但我认为我不太可能超过列表中的约 100 项,所以我决定接受它。
  • 我使用以下公式创建了另一个命名范围(“emptyList”):
    ={""}
    这样,如果选择了第二个依赖项,我也可以锁定第一个下拉列表(以防止出现奇怪的不匹配数据问题)。
  • 对于需要下拉列表的表行,我使用以下公式为列表输入数据验证:
    =IF(ISBLANK($B3),costCategory,emptyList)
    其中 $B3 是第二个相关的下拉位置。

  • 设置第二个依赖下拉数据源和数据验证
    5. 我从同一个数据源创建了另一个数据透视表,其中包含“Type”和“Desc”行,以及“Type”的计数值(同样,这些值没什么大不了的)。数据透视布局设置为表格、重复标签、无总计或小计。我把这个枢轴放在另一个旁边,第一个标题行从 E3 开始。它也是 alpha 排序。
  • 我放入辅助列以确定依赖下拉列表的特定父级的列表从哪里开始,以及该列表的行数。它使用与第一个下拉列表中相同的任意长范围方法 - 只需在枢轴中放入一些不太可能超过的行。在 col C 中,为了获取依赖数据开始的第一行,我输入了这个公式:
    =ROW(INDEX('PivotSheet'!$F$4:$F$200,MATCH($A3,'PivotSheet'!$E$4:$E$200,0)))
    在 col D 中,为了获取存在依赖数据的 cols 的数量,我输入了以下公式:
    =(LOOKUP(2,1/('PivotSheet'!$E$4:$E$200=$A3),ROW('PivotSheet'!$F$4:$F$200))-ROW(INDEX('PivotSheet'!$F$4:$F$200,MATCH($A3,'PivotSheet'!$E$4:$E$200,0))))+1
  • 最后,在具有相关下拉列表(col B)的列中,我使用了以下数据验证规则:
    =OFFSET('PivotSheet'!$F$1,$C3-1,0,$D3,1)
    这基本上采用了在帮助器 cols 中找到的范围来制作下拉列表。

  • 当这些公式被扩展时,它们会递增(A3 到 A4、B3 到 B4 等),因此即使您在 listobject 表中添加行,它们仍然可以工作。

    关于excel - 使用带有数组公式的 if 语句命名范围以用于依赖下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52053670/

    相关文章:

    java - 如何解决java中无法实例化类型Workbook?

    excel - 删除excel中分隔符后的字符串

    excel - Excel 中符合条件的 VLOOKUP 函数的 SUM

    vba - Excel宏执行碾压,试图简化公式

    python - 使用参数 : Python win32com API 调用宏

    Excel:从一个单元格中提取一个完整的数字 - 把它们放在一起:)

    Excel:基于细胞计数的条件

    excel - 具有特定模式的字符串分隔公式

    excel - 我需要在 Excel 工作表中获取 2 列,并将它们转换为以第 1 列作为标题的数据范围

    excel - 使用 Office-JS 获取当前区域