繁体   English   中英

在下拉列表独特价值

[英]Unique Values in Drop Down List

我有两个工作簿,一个源文件和一个输出文件。

源文件包含的信息在输出文件中占据一些下拉列表。

对于每个下拉列表,都有两个链接到它的“名称”(在名称管理器中)。 例如,我的输出文件中的名称“ SchemeID”指的是我的源文件中的相同名称。 它由几行数据组成,填充了我的下拉列表。

源文件中有一些重复项(例如,与相同编号相关联的不同名称)出现在下拉列表中,我想摆脱它们,因此列表仅显示唯一值。 是否可以使用来自不同工作簿的数据来做到这一点?

最简单的方法是转到源工作簿,即“数据功能区”->“删除重复项”。 其他任何事情都需要两个中间的数据表或VBA来完成。 如果您的数据不变,则此手动方法应该可以。

您似乎无法编辑源文件,因此进行编辑

在另一个工作表中(例如Sheet2),您将需要一个公式,该公式将从2个源名称中提取所有数据。 据我所知,没有干净的非VBA方式可以合并到“命名范围”,因此我们需要通过将数据转储到工作表中然后再次进行拾取来实现。

有很多方法可以做到这一点,但是我将选择分解成最多步骤的一种方法。 这将是一个非常凌乱的工作表,但是您可以根据需要将其隐藏,这并不是一个大问题,因为非VBA方法仍然需要数据转储表。

在单元格D1中,我们将行数放入SchemeID中,如下所示:

=ROWS(SchemeID)

在单元格D2中,我们将行数放在SchemeID2中(我假设这是第二个列表的名称,您未指定):

=ROWS(SchemeID2)

在B列中,我们将转储两个命名列表中的数据,而不会进行排序或消除重复项。 从A1开始并向下拖动,请按以下步骤进行操作(如果您希望使用页眉,则会变得有些棘手,因此我将假定没有页眉)。

=IF(ROW()<=$D$1,INDEX(SchemeID,ROW()),INDEX(SchemeID2,ROW()-$D$1)

这是说 - 如果该行不高于SchemeID总条目更多,然后拉在当前行#从SchemeID值。 否则,从SchemeID2中提取条目,在当前行号减去SchemeID中的总行数(因此,如果我们在行10中,但是SchemeID在行4中结束,那么行10将在SchemeID2中提取第6个条目)。

现在在A列中,我们将检查哪一行是重复的,如下所示,从A2开始[A1硬编码为1]:

=IF(ISERROR(MATCH(B2,$B$1:B1,0)),A1+1,A1)

这将检查当前行上方的行中B列中是否存在当前值的重复项。 如果有,它保持相同的索引#如上行(当我们使用这个作为索引键的下一个将被忽略)。 如果没有重复,则将索引号加1。

在单元格D3中,输入以下公式以跟踪有多少个唯一ID:

=MAX(A:A)

接下来,在C列,把你的新的列表,因为有[拖累]从B列拉了许多独特价值:

=VLOOKUP(ROW(),A:B,0)

这是您新的非重复列表。 要对其进行干净引用,请使用以下公式创建一个新的命名范围:

=INDIRECT("'Sheet2!R1C3:R"&'Sheet2!$D$3&"C3", FALSE)

这将简化为[假设D3说的话,假设C列中有20行数据]:

='Sheet2!R1C3:R20C3'

在R1C1引用方法中,它表示Sheet2!C1:C20。

这个新的命名范围应该是您的下拉列表在其他选项卡上引用的范围。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM