我对数据验证的公式定义列表有疑问。
我使用范围D1:D5中的数组公式列出B1:B5中与A列中的标准“Y”匹配的值:
= IFERROR(INDEX($ B $ 1:$ B $ 5,体积(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”标准)。 如果你知道怎么做,请帮我解决这个问题。
答案 0 :(得分:0)
公式
=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
来制作,以便无论数据在列中的哪个位置开始,此公式都会将其选中。< / p>
您需要将公式更新为
=IFERROR(INDEX($E:$E,SMALL(IF($D:$D="aa",ROW($D:$D),""),ROW(A1))),"")
因此,我们将ROW()
调用ROW(A1)
而不是1
,当您自动填充时,我们会自动填充$
,因为它会更新为A2, A3, A4...
这样就可以根据需要获得漂亮的{1,2,3,4,5}
数组。
现在请记住只在第一个条目中使用ctrl + shift + enter。然后自动填充并命名范围。如果你选择整个范围然后点击ctrl-shift-enter它将无效。
只要您保持myrange
更新,那么您的列表应该可以正常运行。
答案 1 :(得分:0)
总结一下, 您需要将公式更新为
= IFERROR(INDEX($ E:$ E,SMALL(IF($ d:$ d =&#34; AA&#34;,ROW($ d:$ d),&#34;&#34; ),ROW(A1)))&#34;&#34)
现在记得只在第一个条目上使用ctrl + shift + enter。然后自动填充并命名范围。如果你选择整个范围然后点击ctrl-shift-enter它将无效。
您可以通过限制公式中的范围来提高效率,但始终从第1行开始,例如: = IFERROR(INDEX($ E1:$ E10,SMALL(IF($ D1:$ D10 =&#34; AA&#34;,ROW($ D1:$ D10),&#34;&#34),ROW (A1))),&#34;&#34;)即使你在第5,6,7行输入公式...... 谢谢@chancea