您好;
我有一张有4列的表格;
A栏和C栏的产品编号
B栏和D栏是产品的详细信息。
我想做的是;如果A列中的数字与C列中的数字匹配,那么我想将B的值(产品详细信息)与E列相关联,但如果数字重复,则在第二行再次与C中的该数字匹配,然后我希望将新值添加到F列。
对我们来说这是一个非常特别的问题。我们正在尝试为新网页创建一个新的SQL数据库,我们必须转换所有这些数据。
我在Excel中使用= vlookup公式尝试了它,但它没有用。我认为这个问题只能通过宏来解决。 (如果我没错......)
PS_请检查图像,甚至很难用我母语解释。
由于
答案 0 :(得分:1)
如果您的数据行少于2000-3000行,则可以使用一些数组公式来完成。如果你还有更多,那么VBA解决方案将更适合。这些数组公式随着它们所指的范围变大而指数地消耗计算负荷。在某些时候,它根本不值得等待,VBA解决方案会更好。
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↵进行最终确定。输入正确后,请填写以从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↵进行最终确定。输入正确后,向右填充几列,然后向下填充所有公式,以匹配在F列中检索到的条目。
我已经将这些公式留给了999行。如果您的需求超出该范围,您可能需要向上调整。搜索 $ 999 并替换为 $ 1999 可以很快实现这一目标。
这就是它的全部。确保在底部留下几行,以防另一个文件有更多行,右边有几列,原因相同。
答案 1 :(得分:1)
如果订单不重要,只有公式的可能替代方法是将后两列附加到前两列(在副本中),在ColumnC中添加空白Row1:
=IF(COLUMN()<=COUNTIF($A:$A,$A2)+2,INDIRECT("$B"&(COLUMN()-3+ROW())),"")
横向和向下复制以适应和在另一列中:
=A1=A2
复制到西装。隐藏ColumnB并过滤另一列以选择FALSE
。选择Row2结束并选择Paste Special,Values到原始工作表的F1。