我在Excel中有问题。
我有以下列表和表(在命名范围内):
Food List
+------------+
| Fruits |
+------------+
| Vegetables |
+------------+
Specific food
+------------+-----------+
| Fruits | Apple |
+------------+-----------+
| Fruits | Banana |
+------------+-----------+
| Fruits | Orange |
+------------+-----------+
| Vegetables | Artichoke |
+------------+-----------+
| Vegetables | Cabbage |
+------------+-----------+
Note data is ordered by alphabetical order
我有两个单元格,将进行数据验证以选择食物类别,然后从该类别中选择特定食物。
我的食品类别数据验证公式类似于=INDEX(Food,,1)
,这很简单。
但是,我很难确定如何创建第二个数据验证。 VLOOKUP
仅给我第一个出现的食物类别,但我找不到最后一个。如果得到最后一个,则可以将MATCH和INDEX与从第一次出现到最后一次的计数一起使用,以设置行数。
是否有任何功能可以使单元格的最后一次出现具有按字母顺序排序的数组?
这是我为解决此问题所做的工作。
[首先,在food
表中,我添加了两列FirstOccurrence
和LastOccurrence
。由于我的Specific Food
是按字母顺序排序的,因此我可以进行vlookup或匹配查找我的食物类别的第一个匹配项。然后,第二个出现是由下一个first_occurrence-1给出的,如果我们在最下面,则是表的长度。
FirstOccurrence =MATCH(J6,INDEX(Specific_Food,,1),0)
LastOccurrence=IF(K7=0,ROWS(Specific_Food),K7-1)
其中:
- J6 is the food category to find
- K7 is the next first occurrence of food category
然后,在数据验证选项中,我们使用offset函数从特定食物表中检索子列表!
=OFFSET(INDEX(Specific_Food,,2),FirstOcc-1,0,LastOcc-FirstOcc+1,1)