匹配并移动Excel中的列

在这里输入图像说明

你好;

我有一张有4列的表格;

A列和C列有产品编号

B列和D列是产品的细节。

我想要做的是 如果列A中的数字与列C中的数字相匹配,那么我想将B的值(产品详细信息)提取到列E,但是如果数字在第二行重复,然后再与C列中的数字匹配,那么我想要把这个新的价值提到F栏

这对我们来说确实是一个特别的问题。 我们正在尝试为新的网页创build一个新的数据库,我们必须像这样转换所有的数据。

我在Excel中使用= vlookup公式试过了,但是没有成功。 我认为这个问题只能用macros解决。 (如果我没有错…)

PS_请检查图片,甚至很难用母语解释。

谢谢

如果你有less于2000-3000行的数据,这可以用一些数组公式来完成。 如果你不止这些,VBA解决scheme将更适合。 这些数组公式会随着它们所涉及的范围变大而呈指数增长。 在某些时候,根本不值得等待,VBA解决scheme会更好。

数组公式来聚合和转置

F2中数组公式是,

=IF(LEN(F1), IFERROR(INDEX(A$1:A$999, MATCH(0, IF(LEN(A$1:A$999), COUNTIF(F$1:F1, A$1:A$999&""), 1), 0)), IFERROR(INDEX(C$1:C$999, MATCH(0, IF(LEN(C$1:C$999), COUNTIF(F$1:F1, C$1:C$999&""), 1), 0)), "")), "") 

请注意,这需要 F1中的标题栏标签。 它不能投入F1。 数组公式需要用Ctrl + Shift + Enter 来完成。 一旦input正确,请填写以获取列A和C中所有零件编号的唯一列表。

G2中的数组公式是,

 =IF(LEN($F2), IFERROR(INDEX($B$1:$B$999, MATCH(0, IF($A$1:$A$999=$F2, COUNTIF($F2:F2, $B$1:$B$999&""), 1), 0)), IFERROR(INDEX($D$1:$D$999, MATCH(0, IF($C$1:$C$999=$F2, COUNTIF($F2:F2, $D$1:$D$999&""), 1), 0)), "")), "") 

这也需要用Ctrl + Shift + Enter 键来 完成 。 一旦input正确,填写正确的几列,然后填写所有的公式,以匹配列F中检索的条目。

我已经把这些公式留给了999行。 如果你的需求超过这个范围,你可能需要调整这些。 search999美元,并取代1999美元可以很快完成。

这就是全部。 请确保在底部留下几行,以防出现同样的原因,另一个文件有更多的行和几列。

如果顺序不重要,则只有公式可能的替代scheme是将后面的两列附加到前两个(在副本中),在ColumnC中添加一个空白的Row1:

  =IF(COLUMN()<=COUNTIF($A:$A,$A2)+2,INDIRECT("$B"&(COLUMN()-3+ROW())),"") 

复制到另一列以适应另一列:

  =A1=A2 

复制下来以适应。 隐藏ColumnB并过滤另一列以selectFALSE 。 select行2结束并将特殊值,值粘贴到原始工作表的F1中。