仅当另一列等于“是”时才返回行使用动态表

仅当另一列等于“是”时才返回行使用动态表

所以我试图返回动态表中的数据行

下面是数据的图片,表名称为“Assignments”,我试过这个公式

在此处输入图片描述

if(Assignments[Shipping]="Yes", Assignments[Name],"")

此公式的问题是它返回空白单元格,我打算在数据验证中使用它,我只想要有值的单元格。我知道 =FILTER 函数可以完美地做到这一点,但我将与没有 365 的人共享此 excel 文件(他们有 2019,不支持 FILTER)。

基本上,我只想在列等于 YES 时返回名称,我能够使用“IF”语句使其工作,但它返回空白单元格,有没有办法只返回等于“是”的行而不返回空白行。

答案1

我建议使用 Helper Table 类型的列。查看下面的屏幕转 GIF 并检查这是否是您想要的。

在此处输入图片描述

在我的示例中,示例表名为 Table24。在单元格 H5 中输入以下公式,然后按公式栏中的CTRL+ SHIFT+ENTER创建数组公式。它将自动括在花括号中。

=IFERROR(INDEX(Table24[Name],SMALL(IF(Table24[Shipping]="Y",ROW(Table24[Shipping])-ROW($F$4),9^99),ROW()-ROW($F$4))),"")

将其向下拖动到所需的行。理想情况下,其长度应等于作业表的整个长度,甚至尽可能延伸。

将此数据转换为表格。在我的示例中,它被命名为 Table4。

在名称管理器中创建一个名称并将此表[列]分配给它。在我的示例中,该名称是 My_List。

在此处输入图片描述

单元格 I5 有数据验证。现在在数据验证中选择列表并输入以下公式,引用表 4 的名称(My_List)

=OFFSET(H5,0,0,MIN(IF(My_List="",ROW(My_List)-ROW(H5),9^99)))

但是如果您计划将此验证复制到多个单元格,那么最好使用绝对引用。

=OFFSET($H$5,0,0,MIN(IF(My_List="",ROW(My_List)-ROW($H$5),9^99)))

在此处输入图片描述

下拉菜单现在应该只有过滤列表,没有空白。希望这能有所帮助。

以防万一,数据验证列表中使用 SUMPRODUCT 的公式的更简单版本。

=OFFSET($H$5,0,0,SUMPRODUCT((My_List<>"")*1))

相关内容