【问题标题】:Create unique list from vlookup or index/match从 vlookup 或索引/匹配创建唯一列表
【发布时间】:2015-05-04 21:13:07
【问题描述】:

我喜欢 VBA,但如果它可以用一个相当直接的公式来完成,那就更好了! (为了最终用户)

假设我有以下数据:

我想创建一个公式,我可以填写在 [D] 列中,该公式将在“a”(这也可以是行而不是列)上查找并在连续行(或列)中返回“红色” , "blue", "green" - 即连续返回所有唯一值,然后停止/出错或其他...

可能吗?合理的期望?

解释公式如何工作的奖励积分

【问题讨论】:

  • 数据透视表可以很容易地做到这一点。

标签: excel vba


【解决方案1】:

有一个很好的解释如何使用数组公式here提取不同值的列表

基本公式是这样的

=IFERROR(INDEX(B$2:B$19, MATCH(0, COUNTIF(D$1:D1, B$2:B$19), 0)),"")

这将为您提供 B 列中的所有不同值。

通过一些调整你可以得到

=IFERROR(INDEX(B$2:B$19, MATCH(0, COUNTIF(D$1:D1, IF(A$2:A$19=D$1,B$2:B$19,D$1)), 0)),"")

也可以作为在 D2 中输入的数组公式,在 D1 中使用“a”来选择仅在 A 列中带有“a”的那些。

必须用CTRL+shift+enter

输入

原来的公式是由

(1) 使用 COUNTIF 创建一个数组,其中每个元素对应于 B2:B19 范围内的一个单元格。如果 B2:B19 范围内的字符串已经在当前单元格上方的一个单元格中(最初是 D2),则 COUNTIF 将在数组中放入 1:如果不是,则将放入 0。

(2) 使用 MATCH 查找数组中第一个零的位置(对应于下一个未添加到列表中的字符串)。

(3) 使用 INDEX 查找 B2:B19 中该位置的字符串。

我选择通过添加一个初步步骤来修改它

(0) 如果 A2:A19 中对应的字母是“a”,则像以前一样使用 B2:B19 - 如果不是,则使用“a”。 “a”已在 D1 中,因此不会添加到 D 列的列表中。

http://www.get-digital-help.com/2009/03/30/how-to-extract-a-unique-list-and-the-duplicates-in-excel-from-one-column/

【讨论】:

  • 公式不仅不起作用,它也没有回答问题。问题是:A 列中的每个值,在 B 列中给出唯一值。
  • 好的,感谢您的评论,当我有时间时,我会改进答案,但我已经输入了一个屏幕截图,据我所知,它确实给了@Methodician 他们的要求为了。我同意数据透视表对这类问题有好处,但是当数据不是数字时,我看不出它在这种情况下是如何工作的?如果您可以将评论扩展为答案,请给它 +1。
  • 顺便说一句,将其中一个 b 更改为“黄色”只是为了证明它不包括在内。
  • 是的 @Mr Mascaro 是对的,使用数据透视表非常容易 - 只需过滤 A 列并将 B 列用作行标签。如果没有其他人,以后会自己发布。
【解决方案2】:

使用数据透视表回答问题:-

(1) 选择插入 |功能区中的数据透视表。在现有工作表上选择 A1:19 作为范围,选择 D1 作为位置。

(2) 将字母拖入过滤框,将颜色拖入行标签框。

(3) 点击表格标题旁边的过滤符号,勾选 Select Multiple Items 并确保只选中“a”旁边的复选框。

您可能希望通过单击功能区中的字段标题来删除“行标签”标题,然后通过右键单击它并选择“删除总计”来删除总计。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2017-06-26
    • 1970-01-01
    相关资源
    最近更新 更多