我想从同一文件中的另一个工作表创建下拉列表。另一个工作表列出了许多项目,并且有一些标准可能会排除该项目在我的下拉列表中的有用性。
我所做的是创建一个新列,其中包含以下类型的公式:=IF(E3>0,D3,"")
其中 D3 是项目的名称。当我将其制作成命名列表以便在另一张工作表中引用它时,我的下拉列表中会出现许多空白。
我找到了这个资源:https://www.contextures.com/xlDataVal08.html这解释了如何动态地延长或缩短列中的项目数,但我实际上想要做的只是跳过空白项目。列长度将保持不变,但有效项目数会发生变化。
对列进行排序,使空白项排在最后,这种做法是不可行的,除非有办法动态地进行这种排序。原因是,随着电子表格的更新,“if”公式的结果将发生变化,一些有效的项将不再有效,而一些无效的列表项将变得有效。因此,我需要列表中可用的项来响应这些公式。理想情况下,如果某个项不再有效,它会将下拉列表重置为顶部项(“选择”,这不是一个会发生变化的列表项),但这只是锦上添花。
答案1
经过进一步搜索后,我发现以下资源与我原始问题中的资源相结合可以给出答案: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()
读作“”为空白的单元格。