查找重复项并删除它们,同时保留其余数据和关联列

时间:2015-08-19 13:02:29

标签: excel function

我有一个Excel文件,其中包含我需要使用的文章和参考文献列表:

Matched:       Article:  BarCode:  Code:
AA01123        AA01123   23459544  4533  
AA06789        KK01234   30493282  45643
BB20443        AA06789   12304123  453
CC30313        BB20443   12123434  646453
DD22890        CC30313   12341344  433245
               JH01241   12312312  4324
/end           DD22890   34343442  22244
               GF06789   12341434  24621
               XY12306   12341213  2344

               /etc../

匹配列是已经过处理的文章,文章包含已处理的两篇文章的完整列表(因此匹配的文章专栏)以及我还需要解决的问题。 我想在完整列表中填写匹配中的那个,以便它只是我必须要处理的那个。

我需要一个功能,找到匹配文章之间的副本,并使用相应的条形码代码。 我不需要对其他列进行排序 BarCode 代码我只需要将它们与相应的文章保持一致。

它会给出类似这样的东西:

Matched:     Article:  Barcode:  Code:
             KK01234   19341344  433245
             JH01241   17312312  4324
             XY12306   12341213  2344
             GF06789   12341434  24621

它也可以删除第一列,因为我不需要它为了清楚起见我这样说。

我的问题是因为匹配文章没有相同的长度(约700和1300行)我不能简单地通过过滤找到副本,而且它也是不会按顺序对其余部分进行排序。

到目前为止我已经使用了这个,但它只找到了重复内容并且没有删除相应的数据。

=IF(ISNA(MATCH(A1,C:C,0)),””,INDEX(C:C,MATCH(A1,C:C,0))) 

如果有人能告诉我如何改进这个功能,或者找到另一个能做我需要的功能那就太棒了!

1 个答案:

答案 0 :(得分:0)

适合您情况的东西可能需要VBA,它可以自动化系统并实际上删除行,但是因为您并不是说我认为您不熟悉它。我建议你使用2个数据表:1表示所有原始数据,1表示只保留尚未“处理”的行。

设置原始数据表

首先,我假设您的原始数据表(从3列'文章''条形码'和A,B和C列中的'代码'开始)在sheet1上。我还假设您的“匹配”项目列表位于其他位置 - 假设您在sheet2的A列上手动输入。理想情况下,匹配列应根据您已经完成的内容进行自动填充,但如果不知道您实际上是如何“处理”每一行,我就不能真正推荐任何内容。

接下来,在原始数据列的右侧添加一个新列 - 让我们将其称为列D.这将只检查每行上的文章是否已经“处理”。把它放在D2中并复制下来:

=MATCH(A2, Sheet2!A:A, 0)

如果项目尚未匹配,则显示#N / A,否则将显示行号,在Sheet2上输入物品编号。我们可以使用它来创建一个新的有序列表,它将跳过已经输入的项目(即:MATCH函数返回除#N / A之外的其他内容)。把它放在E2中并复制下来(留空E1):

=IF(ISERROR(D2),E1+1,E1)

设置结果标签

现在在结果选项卡上(比如说Sheet3),只需创建一个从1到未解析项总数的索引,然后使用该索引从Sheet1中提取基于列E的列。所以Sheet3 A列看起来如下(输入A2并留空A1):

=IF(A1<MAX(Sheet1!E:E,A+1,"")

然后在B1,C1和D1中创建标题,从表单1中提取数据.INDEX函数将引入所需的数据行,MATCH函数将找到相应的行以从中拉出数据。把它放在B2中,然后向右/向下拖动,获得与数据一样多的行和列:

=INDEX(Sheet1!A:A, MATCH($A2, Sheet1!$E:$E, 0))

因为我们只希望这样做直到数据存在,我们可以将整个函数包装在一个检查中,以确定列A是否已用完数字:

=IF($A2>0,INDEX(Sheet1!A:A, MATCH($A2, Sheet1!$E:$E, 0)),"")

就是这样。您现在只有一个尚未匹配的项目的有序列表,并且您还拥有原始原始数据的完整列表作为审计跟踪。剩下的唯一步骤是使Sheet2中的“匹配项目”列表自动填充,但这取决于您如何确定项目的匹配时间 - 也许这需要手动[即:如果您正在完成Excel之外的工作]