比较两个表中每行的给定单元格

时间:2013-06-25 15:49:55

标签: excel vba excel-vba

我希望用另一个数据表的最后一列更新一个数据表的最后一列。这是更大的vba代码的一部分。第一个表从A2扩展到列K和行“lastrpivot1”。第二个从A1001到列K和行“lastrpivot2”。从表2的第一行开始(row1001),我必须根据单元格A到E中的值找到表1中的等效行。

因此,必须将单元格A到E或frow 1001与第2行的单元格A到E进行比较,然后是第3行,然后是第4行...直到匹配(如果找到)或直到行“lastrpivot1”。当找到匹配时,K中的值必须返回到行1001的K值.EX:如果行1001的AtoE匹配行65的行AtoE,则copu K65到K1001。每张桌子上的比赛不会超过1场比赛。如果没有匹配则没有任何回报。

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

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

Thnka你

1 个答案:

答案 0 :(得分: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