我想从同一文件中的另一个工作表创建一个下拉列表。另一个工作表列出了许多项目,以及一些可能排除该项目在我的下拉列表中有用的标准。
我所做的是开始一个具有以下类型公式的新列:=IF(E3>0,D3,"")
其中 D3 是项目的名称。当我将它放入一个命名列表以便在另一个工作表上引用它时,我的下拉列表中有许多空白。
我找到了这个资源:https ://www.contextures.com/xlDataVal08.html ,它解释了如何动态延长或缩短列中的项目数,但我想要做的实际上只是跳过空白项目。列长度将保持不变,但有多少项是有效的就是变化。
对列进行排序以使空白项出现在末尾不是一种选择,除非有一种方法可以动态地进行这种排序。原因是随着电子表格的更新,“if”公式的结果会发生变化,一些有效的项目将不再有效,而一些无效的列表项目将变得有效。因此,我需要列表中可用的项目来响应这些公式。理想情况下,如果某个项目不再有效,它会将下拉列表重置为顶部项目(“选择”,这不是更改的列表项目),但这只是锦上添花。
经过更多搜索,我发现以下资源与我原始问题中的资源结合使用时给出了答案:https ://www.myonlinetraininghub.com/excel-remove-blank-cells-from-a-range
使用结构
=iferror(index(range,small(if(istext(range),row(range),row(A1))),"")
可以构造一个没有空单元格range
的列表,感兴趣的列表在哪里。然后可以应用前面提到的链接,其中列表动态调整长度(键offset()
用于执行此操作)。另一个需要做的调整是我们不能用
counta()
它来确定哪些单元格是空的,因为空字符串""
读作是非空的。因此,我们需要减去countblank()
将“”读作空白的部分。