Excel:使用

我对Excel很新,但是我有以下情况:

我有Sheet1包含:

  • 用户input的数值在column_A
  • column_B用户select的是/否下拉列表,其引用隐藏Sheet3上的两个项目列表(YES,NO)。

我有Sheet2这是包含:

  • 用户select的下拉列表中包含Sheet1:column_A中所有唯一值Sheet1:column_A用于用户select对“ Sheet1:column_B ”中的“是/否”下拉列表select“是”的Sheet1:column_B

到目前为止,我有一个列表Column_A_Values具有以下公式:

 =OFFSET(`Sheet1`!$A$1,0,0, COUNTA(Sheet1!$A$1:$A$1000)+99) 

在隐藏的Sheet3 ,我在Sheet3!column_B有以下公式:它试图生成一个唯一值列表,其中用户select了对Sheet1:column_B的YES / NO下拉列表select“YES”。 这是行不通的,但我相信这是正确的道路:

 =INDEX(Column_A_Values,MATCH(0,COUNTIF($B$1:$B15,Column_A_Values)+("YES"<>Sheet1$B15),0)) 

最后,我在sheet2上有一个下拉列表,引用一个包含以下公式的命名列表:

 =OFFSET(Sheet3!$B$2, 0, 0, COUNT(IF(Sheet3!$B$2:$B$1000="", "", 1)), 1) 

如果有任何不清楚的地方,我表示歉意,并会在必要时澄清。 如果有人愿意提供帮助,我将不胜感激。 我没有能够得到第二个公式的工作正确,所以这是我的优先事项,但我也感谢您有任何build议,您可能会有关于获得Sheet2的项目function优越的方法。 再一次,我对Excel很新,但是我正在学习。

如果您不想使用Ctrl + Shift + Enter Array公式types的解决scheme,您可以尝试:

1 指数 – SumProduct公式

 =IFERROR(INDEX(Column_A_Values,(SUMPRODUCT(SMALL(--(Column_B_Values="YES")*ROW(Column_A_Values),COUNTIF(Column_B_Values,"<>"&"YES")+ROW(A1))))),"") 

但是如果不pipe你是否使用数组公式,对于你来说无关紧要,下面是一些另外的函数,作为不同于亲爱的@ ASH所build议的选项。

2 指数公式 – 数组系列

 =IFERROR(INDEX(Column_A_Values,(SMALL(IF(Column_B_Values="YES",ROW(Column_A_Values)),ROW(A1)))),"") Don't Forget to End your function by clicking ctrl+shift+enter, that's really important. 

3偏移公式 – 数组系列

 =IFERROR(OFFSET($A$1,SMALL(IF(Column_B_Values="YES",ROW(Column_B_Values)-MIN(ROW(Column_B_Values))+1),ROWS($1:1))-1,0),"") Don't Forget to End your function by clicking ctrl+shift+enter, that's really important. 

**在这些例子中,唯一需要做的就是将Column_B_Values定义为Sheet1 - Column_B Yes/No Column Sheet1 - Column_B **

然后,再次提到@ASH,你的validation列表可以设置为这个公式:

=OFFSET(Sheet3!$B$2,0,0, COUNT(Sheet3!$B:$B))

要从Sheet3的B列中的Column_A_Values生成唯一值列表,请在Sheet3!B2键入此数组公式 ,然后将该列复制/粘贴足够数量的行:

 Sheet3!B2: =IFERROR(INDEX(Column_A_Values, MATCH(1, (OFFSET(Column_A_Values,0,1)="Yes")*(COUNTIFS(B$1:B1,Column_A_Values)=0), 0)),"") Ctrl+Shift+Enter 

最后,validation的命名列表可以设置为以下公式:

 =OFFSET(Sheet3!$B$2,0,0, COUNT(Sheet3!$B:$B))