Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在excel中,是否可以从一列创建唯一值的列表,并使用该列表从另一列复制数据?_Excel - Fatal编程技术网

在excel中,是否可以从一列创建唯一值的列表,并使用该列表从另一列复制数据?

在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列始终是一个数字,我

我在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列始终是一个数字,我建议使用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>)