在excel中,是否可以从一列创建唯一值的列表,并使用该列表从另一列复制数据?
我在B列中有一个数据列表,其中有时有重复项。在A列中,每个项目都有一个标识符。我想创建一个列表,其中只显示每个项目的一个实例及其标识符 以下是我拥有的列表和预期输出的屏幕截图: 对于ID使用:在excel中,是否可以从一列创建唯一值的列表,并使用该列表从另一列复制数据?,excel,Excel,我在B列中有一个数据列表,其中有时有重复项。在A列中,每个项目都有一个标识符。我想创建一个列表,其中只显示每个项目的一个实例及其标识符 以下是我拥有的列表和预期输出的屏幕截图: 对于ID使用: =INDEX($A$3:$A$17,MATCH(0,COUNTIF($E$3:E3,$A$3:$A$17),0)) 将其放入E4并拖动,一旦点击N/A,将列出所有唯一值 然后您可以使用VLOOKUP作为名称: =VLOOKUP(E4,$A$3:$B$17,2,0) 如果您的项目ID列始终是一个数字,我
=INDEX($A$3:$A$17,MATCH(0,COUNTIF($E$3:E3,$A$3:$A$17),0))
将其放入E4并拖动,一旦点击N/A,将列出所有唯一值
然后您可以使用VLOOKUP作为名称:
=VLOOKUP(E4,$A$3:$B$17,2,0)
如果您的项目ID列始终是一个数字,我建议使用MINIFS 您可以选择最低ID,该ID大于您已选择的任何ID:
MINIFS($A$3:$A$17,$A$3:$A$17,">" & MAX($E$2:$E2))
如果没有剩余的唯一ID,它将返回0。因此,我们可以为此添加一个检查,让它返回一个空字符串:
=IF(MINIFS($A$3:$A$17,$A$3:$A$17,">" & MAX($E$2:$E2))=0,"",MINIFS($A$3:$A$17,$A$3:$A$17,">" & MAX($E$2:$E2)))
然后从这个ID中得到名字,我非常不喜欢VLOOKUP。在我看来,这个公式永远不应该被使用。索引/匹配公式在各方面都更好。它更快,更可靠,因为插入列不会破坏它,更容易使用,因为您不需要计算列,更通用,您的范围不必相互内联
要使用的索引/匹配将是:
INDEX($B$3:$B$17,MATCH($E3,$A$3:$A$17,0))
然后,您可以将其包装在IF中,以便在没有剩余ID时返回空字符串:
=IF($E3="","",INDEX($B$3:$B$17,MATCH($E3,$A$3:$A$17,0)))
请参见此图以了解说明:
编辑:如何从文本ID创建顺序数字ID
这个公式所做的是检查字符串值是否已经被分配了一个ID。如果已经分配了ID,它将使用INDEX/MATCH检索该ID。如果没有,则通过获取先前分配的最大数字ID并添加1,为其分配序列中的下一个数字
如果要忽略空白文本ID,只需将其包装在If中即可返回空白:
=IF($A2="","",<Formula Above>)
我必须承认,在这种情况下,我通常使用透视表。我是一个懒惰的人,除非这个过程是宏或任何日常繁重的过程/子例程的一部分,否则我使用Pivot表,因为它使用ID是数字或字符串 假设你得到了这个: 创建一个透视表,只需将两个字段都带到行部分。确保停用小计,并应用 您将获得以下信息: 大约需要。。。25秒就到了。没有复杂的公式。但正如我所说,这一解决方案可能并不适用于所有人 但我喜欢它。有关透视表的更多信息:
如果您想快速分析数据,透视表非常有用。不幸的是,一旦你想做任何更复杂的事情,它就会变得有问题/不可能。因此,我宁愿使用自己的公式手动创建数据透视,以便更好地控制它们。在这种情况下,您可以创建一个使用字符串ID的数字ID列。我将很快更新我的答案。
=IF($A2="","",<Formula Above>)