我希望用另一个数据表的最后一列更新一个数据表的最后一列。这是更大的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你
答案 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