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

问题描述 投票:2回答:2

找了一下之后难过......

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

   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 for array formula):

={if(c2:c6="Activity",a2:a6,"")}

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

有没有办法让这项工作?

提前致谢

excel excel-formula
2个回答
1
投票

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

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

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

设置第二个依赖的下拉数据源和数据验证5.我从同一个数据源创建了另一个数据透视表,其行为“Type”和“Desc”,计数值为“Type”(同样,值不是a很重要的)。枢轴布局设置为表格,重复标签,无总计或小计。我将此枢轴放在另一个旁边,第一个标题行从E3开始。它也alpha排序。

  1. 我放入帮助列来确定列表从依赖下拉列表的特定父级开始的位置,以及该列表的行数。它使用与第一个下拉列表中相同的任意长程方法 - 只需在枢轴中放入一些不太可能超出的行。在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
  2. 最后,在具有依赖下拉列(col B)的列中,我使用了以下数据验证规则: =OFFSET('PivotSheet'!$F$1,$C3-1,0,$D3,1) 这基本上取了帮助列中的范围来制作下拉列表。

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


0
投票

在D列中创建一个辅助列并编写简单的公式

= IF(C2 = “活动”,A2, “”)

一旦你有了D列,就可以从D列创建一个列表,忽略你想要的空白单元格。

附:如果您不关心空白单元格,请使用E2列中的公式并在下方拖动,这将为您提供要在列表中看到的连续值。

= IFERROR(SMALL($ d $ 2:$ d $ 6 ROW() - 1), “”)

© www.soinside.com 2019 - 2024. All rights reserved.