2016-03-30 24 views
0

我已经看过几个线程,并且有一些触及我的问题,但是,我从来没有使用过VBA,也不知道如何改变编码以适应我的问题。用第二张纸上的数据覆盖一张纸上的行数据,满足4个条件

我想从片材1覆盖于片材2的数据行,从而提供在列中的数据A,B,C & d(实时数据起始行2)是在两个片材的匹配1 & 2.

实质上,工作表2是我的数据存储,工作表1是工作表2的模板。前四列中所有可能的数据组合已经存在于工作表2中,其余数据未知。所以当我得到那些未知的数据时,我想覆盖表2中的那一行。

很多人已经做出了关于复制行在某一列中搜索特定术语的位置的线索,而我将许多不同的术语来搜索,但正如我所说,他们将需要在两张表上匹配。

希望我有道理!请帮忙!

+0

如果你不知道我的VBA认为这将是更好地去自由职业者的网站,并张贴此作为一个工作,你会得到它与花费的金额不大很快完成。否则,请提供你已经尝试过的东西以及你卡在哪里。 – user1429899

回答

0

你也许可以用公式来做到这一点,而不是使用VBA。

如果你没有头粘贴此公式到工作表Sheet1的单元格E1:

=IF(AND(A1=INDEX(Sheet2!A:A,MATCH(A1,Sheet2!A:A,FALSE)),B1=INDEX(Sheet2!B:B,MATCH(B1,Sheet2!B:B,FALSE)), C1=INDEX(Sheet2!C:C,MATCH(C1,Sheet2!C:C,FALSE)),D1=INDEX(Sheet2!D:D,MATCH(D1,Sheet2!D:D,FALSE))),INDEX(Sheet2!E:E,MATCH(A1,Sheet2!A:A,FALSE)),"NO") 

或者这一个为E2,如果你有一个标题行:

=IF(AND(A2=INDEX(Sheet2!A:A,MATCH(A2,Sheet2!A:A,FALSE)),B2=INDEX(Sheet2!B:B,MATCH(B2,Sheet2!B:B,FALSE)), C2=INDEX(Sheet2!C:C,MATCH(C2,Sheet2!C:C,FALSE)),D2=INDEX(Sheet2!D:D,MATCH(D2,Sheet2!D:D,FALSE))),INDEX(Sheet2!E:E,MATCH(A2,Sheet2!A:A,FALSE)),"NO") 

然后拖动整个使用在单元格右下方的切换点就像您希望列从工作表2进入一样。

然后突出显示刚刚创建的整行,然后将右下方的小切换拖到工作表的最下方,因为您有数据(或者尝试双击切换到自动填充)。

我在一小组数据上尝试了这一点,它似乎可以工作,因此它应该适用于较大的数据集,只要sheet1上的4列的所有可能的变体都可以在sheet2上使用,并在以下列中包含相关数据。

如果在任何单元格中得到“否”的结果,则Excel无法在sheet2中找到与sheet1上匹配的确切组合的行。

编辑 - 更新下面的答案。

试试这个,这对你来说更有可能。

Sub CopyItOver() 

Dim sh1 As Worksheet, sh2 As Worksheet 
Set sh1 = Sheets("Sheet1") 
Set sh2 = Sheets("Sheet2") 

    For Each c1 In sh1.Range("A1", sh1.Range("A1").End(xlDown)) 
     For Each c2 In sh2.Range("A1", sh2.Range("A1").End(xlDown)) 
      If c2.Value = c1.Value Then 
       If c2.Offset(0, 1).Value = c1.Offset(0, 1).Value Then 
        If c2.Offset(0, 2).Value = c1.Offset(0, 2).Value Then 
         If c2.Offset(0, 3).Value = c1.Offset(0, 3).Value Then 
          c1.EntireRow.Value = c2.EntireRow.Value 
         End If 
        End If 
       End If 
      End If 
     Next c2 
    Next c1 

End Sub 
+0

不幸的是我无法使这种方法工作。我在E栏第1页中为这个公式创建了一个额外的列,将剩下的列推出(F到AA)。我在表2中也做了相同的操作,以避免数据覆盖到错误的单元格中。公式运行时,它会提示我打开一个文件(我假设有一个目标需要更新?)我点击了工作簿中的相关工作表,但它似乎并不喜欢它,当我尝试时它会执行相同的操作沿着或向下拖动单元格。之后,我收到了来自Excel的错误消息,告诉我使用插入功能选项。 –

+0

您的图纸名为Sheet1和Sheet2还是别的? –

+0

更新 - 我在更改工作表的'sheet2'名称时犯了一个错误,我忘记了工作表名称周围的逗号。我还在索引数组周围包含了美元符号,因为它们在我拖动单元格时发生了变化。 不幸的是,虽然仍然没有工作,但现在没有文件提示,但所有单元刚刚读取#N/A –

相关问题