【问题标题】:Excel: Populate drop-down with [unique cells of column_A, where column_B value = SomeValue]Excel:使用 [column_A 的唯一单元格,其中 column_B 值 = SomeValue] 填充下拉列表
【发布时间】:2017-05-12 15:47:35
【问题描述】:

我对 Excel 很陌生,但遇到以下情况:

我有 Sheet1,其中包含:

  • column_A 中用户输入的数值
  • column_B 中用户选择的 YES/NO 下拉列表,它引用隐藏的 Sheet3 上的两个项目列表 (YES,NO)。

我有Sheet2,其中包含:

  • 用户选择的下拉列表包含Sheet1:column_A 中的所有唯一值,用于用户选择在Sheet1:column_B 中的YES/NO 下拉列表中选择“YES”的行。

到目前为止,我有一个命名列表Column_A_Values,其公式如下:

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

在隐藏的Sheet3 上,我在Sheet3!column_B 中有以下公式,它尝试生成一个唯一值列表,其中用户选择在Sheet1:column_B 的“是/否”下拉列表中选择“是”。这不起作用,但我相信它在正确的轨道上:

=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)

如果有任何不清楚的地方,我深表歉意,并会在必要时澄清。我将不胜感激任何人愿意提供的帮助。我无法让第二个公式正常工作,所以这是我的首要任务,但我也很感谢您就获得 Sheet2 的项目符号功能的优越方法提供的任何建议。同样,我对 Excel 很陌生,但我正在学习。

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    如果你不想使用Ctrl+Shift+Enter 数组公式你可以尝试的解决方案类型:

    1 指数 - SumProduct 公式

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

    但是,如果您是否使用数组公式并不重要,这里还有一些其他功能,与亲爱的@A.S.H 所建议的选项不同。

    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.
    

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

    然后正如@A.S.H 再次提到的,您的验证命名列表可以设置为这个公式:

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

    【讨论】:

    • 哇,菜单上有这么多选项:)。有一些非数组选项很好。
    【解决方案2】:

    要从 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
    

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

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

    【讨论】:

      猜你喜欢
      • 2015-07-14
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多