我有一个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)))
如果有人能告诉我如何改进这个功能,或者找到另一个能做我需要的功能那就太棒了!
答案 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之外的工作]