【问题标题】:Excel Conditional Dynamic Data ValidationExcel 条件动态数据验证
【发布时间】:2015-02-04 19:32:26
【问题描述】:

我对定义数据验证列表的公式有疑问。

我正在使用 D1:D5 范围内的数组公式来列出 B1:B5 中与 A 列中的条件“Y”匹配的值:

=IFERROR(INDEX($B$1:$B$5,SMALL(IF($A$1:$A$5="Y",ROW($A$1:$A$5),""),ROW() )),"") 我将此数组命名为“myrange”

然后在 E1 中的数据验证中,我使用下面的公式作为列表:

=OFFSET(D1;0;0;MATCH("";myrange;0)-1;1)

但是,如果我从第 1 行开始执行相同操作 - 公式不会显示正确的值(某些值会消失,并且不会保留“Y”标准)。 如果你知道怎么做,请帮我解决这个问题。

PS。以上公式来自:Excel Conditional Dynamic Data Validation

【问题讨论】:

  • 如果我不是从第 1 行开始做同样的事情”,你是指=IFERROR 函数还是=OFFSET 数据验证?
  • 我的意思是IFERROR函数。
  • F.E.如果我的范围从 A5:A10、B5:B10 开始,并且我在 D5 中键入公式 =IFERROR(INDEX($B$5:$B$10,SMALL(IF($A$5:$A$10="Y",ROW( $A$5:$A$10),""),ROW())),"")
  • 我得到错误的值,这些值不按顺序且不符合条件“Y”

标签: arrays excel


【解决方案1】:

公式

=IFERROR(INDEX($B$1:$B$5,SMALL(IF($A$1:$A$5="aa",ROW($A$1:$A$5),""),ROW())),"")

仅适用于第 1 行,因为您正在使用 SMALL(...,ROW()) 进行索引,ROW() 显然会返回您所在的当前行。如果您的列表从第 1 行开始并向下运行,这非常有用,但如果从第 2 行或更低的行开始,则会中断。

根据您放置数据的位置,您需要更新 ROW() 数字以匹配您开始的实际行。

除了使这个公式更动态之外,您还可以使用完整的列名,即$E:$E$B:$B,以便在列中数据开始的任何地方,这个公式都会提取它。

您需要将公式更新为

 =IFERROR(INDEX($E:$E,SMALL(IF($D:$D="aa",ROW($D:$D),""),ROW(A1))),"")

因此,我们调用ROW(A1) 而不是ROW(),它评估为1,并且当您自动填充时,因为我们省略了$,它会更新为A2, A3, A4...,这样您就可以得到漂亮的{1,2,3,4,5} 数组你需要它。

现在请记住仅在 first 条目上使用 ctrl+shift+enter。然后自动填写并命名范围。如果您选择整个范围然后按 ctrl-shift-enter 它将不起作用。

只要您保持myrange 更新,那么您的列表应该可以正常工作。

【讨论】:

  • 对我不起作用,可能是某个地方的愚蠢错误。我现在将上传一个示例
  • @AndreyVorobyev 好的,是的,如果你用你所拥有的更新你的问题,我可以相应地更新我的答案
  • 这里有一个例子:wikisend.com/download/395134/Book_ex.xlsx>提前感谢您的帮助!
  • 忘记通知你了,sry))
  • @AndreyVorobyev 好吧,我的答案已更新,现在应该可以使用了
【解决方案2】:

总之, 您需要将公式更新为

=IFERROR(INDEX($E:$E,SMALL(IF($D:$D="aa",ROW($D:$D),""),ROW(A1))),"" )

现在请记住仅在第一个条目上使用 ctrl+shift+enter。然后自动填写并命名范围。如果您选择整个范围然后按 ctrl-shift-enter 它将不起作用。

您可以通过限制公式中的范围来提高效率,但始终从第 1 行开始,例如: =IFERROR(INDEX($E1:$E10,SMALL(IF($D1:$D10="aa",ROW($D1:$D10),""),ROW(A1))),"") 即使您在第 5、6、7 行输入公式... 谢谢@chancea

【讨论】:

    猜你喜欢
    • 2018-03-03
    • 2021-02-24
    • 2019-08-12
    • 2012-11-29
    • 2016-05-06
    • 1970-01-01
    • 2020-06-15
    • 2019-11-24
    相关资源
    最近更新 更多