在寻找了一些之后陷入了困境...
我有一个包含以下内容的电子表格:
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
+------+----------------------+--------------+
我想基于活动创建一个下拉列表。我可以在典型的单元格中执行此操作(使用ctrl + shift +输入数组公式):
={if(c2:c6="Activity",a2:a6,"")}
但是我不知道如何正确地将该公式放入命名范围。当我按Ctrl + Shift + Enter时,没有大括号出现。如果没有括号,它似乎也不起作用(它将值显示为{...})。
有没有办法使这项工作成功?
预先感谢
答案 0 :(得分:1)
最后,这不可能通过命名范围来实现;基于以上达伦评论中的blog page和this link,我最终做了一个带有偏移量和两个枢轴的依赖下拉列表的变体。可能有些矫kill过正,但至少我知道我是怎么做到的。
设置第一个下拉数据源和该下拉菜单的数据验证
对于第一个列表,我从下拉数据源创建了一个透视图,其中包含列“ Type”的行和计数“ Type”的值(这些值并不相关,但是我发现它对于仅知道以后依赖项的期望如何)。此枢轴位于新工作表的标准默认枢轴位置中,其中标题行从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排序。
我放入了帮助器列,以确定从属下拉列表的特定父级列表的起始位置,以及该列表的行数。它使用与第一个下拉列表相同的任意长距离方法-只是将一些行放在数据透视图中不太可能被超过。在C行中,为了获取依赖数据开始的第一行,我输入了以下公式:
=ROW(INDEX('PivotSheet'!$F$4:$F$200,MATCH($A3,'PivotSheet'!$E$4:$E$200,0)))
在列D中,为了获得存在相关数据的列数,我使用以下公式:
=(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
最后,在具有依赖项下拉列表(列B)的列中,我使用了以下数据验证规则:
=OFFSET('PivotSheet'!$F$1,$C3-1,0,$D3,1)
基本上,它会使用在辅助列中找到的范围作为下拉列表。
扩展这些公式后,它们会递增(从A3到A4,从B3到B4,等等),因此即使您向列表对象表中添加行,它们也仍然可以工作。
答案 1 :(得分:0)
在D列中创建一个帮助列并编写简单公式
= IF(C2 =“ Activity”,A2,“”)
一旦有了D列,就可以从D列创建一个列表,而忽略所需的空白单元格。
P.S。如果您不关心空白单元格,请使用E2列中的公式并将其拖到下面,这将为您提供要在列表中看到的连续值。
= IFERROR(SMALL($ D $ 2:$ D $ 6,ROW()-1),“”)