【问题标题】:How do I use INDEX MATCH to return multiple values?如何使用 INDEX MATCH 返回多个值?
【发布时间】:2015-11-10 08:52:13
【问题描述】:

我有一个二进制值的二维矩阵。我想在一行中找到所有的 1,并在一个单元格中以数组或逗号分隔字符串的形式返回它们各自的标题。

我可以在 VBA 中做到这一点,但据我所知,我想知道是否有一种方便的方法可以在 Excel 中做到这一点。

【问题讨论】:

  • 简短的回答是:“有一种方法可以做到这一点,无论它是否方便,它都非常难看”。基本上,要让它工作,答案中需要多个单元格空间和明确定义的数据区域。请参见此处:stackoverflow.com/a/31325935/5090027 和此处:stackoverflow.com/q/33112330/5090027
  • 如果您添加一些详细信息来说明您的具体意图,我可以将上述内容总结为一个可行的解决方案。关键是 - 你是否可以接受:(1)只有顶部,比如 5 个结果显示?或者 (2) 有一个答案空间,它有效地占用了数据块中的行数? (请注意,您特别询问是否可以在单个字符串或数组结果中获得它 - 只有当您可以硬编码您期望获得的值响应的数量时才有可能,即使这样您也需要多次复制相同的公式在单个单元格中,或使用大的“帮助”列)。

标签: excel excel-formula excel-2010


【解决方案1】:

假设您的矩阵位于B6:F12(根据需要调整公式和参数的范围)

G7 输入此FormulaArray 并复制到最后一条记录 (输入FormulaArray按下[Ctrl]+[Shift]+[Enter]同时,如果输入正确,您将在公式周围看到{ }

=TRIM(CONCATENATE(
IF($B7:$B12,$B$6,""),CHAR(32),
IF($C7:$C12,$C$6,""),CHAR(32),
IF($D7:$D12,$D$6,""),CHAR(32),
IF($E7:$E12,$E$6,""),CHAR(32),
IF($F7:$F12,$F$6,"")))

此公式连接由空格分隔的 5 个字段的结果。您必须为每个附加字段再添加一个参数。

这个标准公式也可以解决问题:

=TRIM(SUBSTITUTE(CONCATENATE(
IF($B7,", "&$B$6,""),
IF($C7,", "&$C$6,""),
IF($D7,", "&$D$6,""),
IF($E7,", "&$E$6,""),
IF($F7,", "&$F$6,"")),",","",1))

随着字段数量的增加,这两个公式肯定会变得更长,但是由于公式非常重复,因此可以使用 Excel 公式来构建它。

【讨论】:

    猜你喜欢
    • 2013-11-07
    • 1970-01-01
    • 2017-11-24
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多