2013-06-25 40 views
0

我期待用另一个数据表的最后一列更新一个数据表格的最后一列。这是更大的vba代码的一部分。第一个表格从A2扩展到K列和“lastrpivot1”行。第二个从A1001到K列和“lastrpivot2”行。与表2(row1001)的第一行开始,我必须找到基于在小区A比较两个表中每行的给定单元格

所以小区A〜E或FROW 1001具有值E.表1中的等效行进行比较,以小区A到第2行的E,然后是第3行,然后是第4行...直到找到匹配或直到行“lastrpivot1”。当找到匹配项时,K中的值必须返回到行1001的K值。EX:如果行1001的AtoE与行65的行AtoE匹配,则将copu K65与K1001匹配。从每张桌子都不能超过1场比赛。如果没有比赛,则没有任何回报。

然后我们从第1002行开始(第二张图的第二行),然后1003,1004 ...到lastrpivot2。

我使用vba,但我不知道所有的功能。这可能是为什么我不能弄清楚这一点。

Thnka你

回答

0

细胞K1001,试试这个:

=IF((A1001&B1001&C1001&D1001&E1001)=(A1&B1&C1&D1&E1),K1,"")

然后拖动公式向下。

这将整行1001与整个第1行进行比较,这就是您要求的。

如果您打算找到的匹配行像一个VLOOKUP(你有这种暗示,但不清楚这是你的意图),那么你将需要使用VBA来做到这一点。

喜欢的东西(未经测试):

Sub MatchTables() 
Dim tbl1 as Range, tbl2 as Range 
Dim var1() as Variant, var2() as Variant, v as Variant 
Dim r as Long, matchRow as Long 
Set tbl1 = Range("A1:K500") '## Modify as needed 
Set tbl2 = Range("A1001:K15001") '## Modify as needed 

ReDim var1(1 to tbl1.Rows.Count) 
ReDim var2(1 to tbl2.Rows.Count) 

'## store the range values, conctaenated, in array variables: 
For r = 1 to tbl1.Rows.Count 
    var1(r) = tbl1(r,1) & tbl1(r,2) & tbl1(r,3) & tbl1(r,4) & tbl(r,5) 
Next 
For r = 1 to tbl2.Rows.Count 
    var2(r) = tbl2(r,1) & tbl2(r,2) & tbl2(r,3) & tbl2(r,4) & tbl2(r,5) 
Next 

r = 0 
For each v in Var2 
    r = r+1 
    '## Check to see if there is a complete match: 
    If Not IsError(Application.Match(v, var1, False)) Then 
     matchRow = Application.Match(v, var1, False) 
     '## If there is a match, return the value from column K in the first table: 
     tbl2.Cells(r,11).Value = tbl1.Cells(matchRow,10).Value 
    Else: 
     tbl2.Cells(r,11).Value = vbNullString 
    End If 
Next 

End Sub 
+0

不完全是。我需要将第1001行与第2行进行比较。如果它不匹配,则将它与第3行进行比较,然后将4,5,6(直到变量的最后一行)与比较匹配。当它发现一个它必须返回K或者如果它没有返回则什么也不返回。这将重新启动1002行,然后1003到最后一个(变量) – user2385809

+0

您需要在VBA中这样做。如果有多个匹配怎么办?但更好的解决方案是获取可用数据和可用于查找/索引的标识符。如果这不是一个选项,您将不得不学习如何使用VBA。这不是一个特别复杂的请求,但是如果你还不知道某些VBA的话。虽然这里有人可能愿意为你做功课,并为你写代码,但我不是。我会建议使用'AutoFilter'方法,但是如果你的数据全部在你所描述的一张表中,并且在同一列中,那么这可能会有问题。 –

+0

是的,这将成为vba代码的一部分。我知道如何使用VBS,但我没有掌握它。我尝试了两天,我的同事正在等待这个。我做了所有其余的代码,但这部分我只是不知道该怎么做。你至少能指出我朝着正确的方向吗? – user2385809