在不同的工作表中匹配单元格值

所以我在这里度过了一段艰难的时光。 我有两个不同的电子表格。 比方说,Sheet1有一个列,相应的行(A1,A2,A3 ..)中的数据为x,y,z …

现在我有另一个电子表格(Sheet2)与一组数据(x,y,z …)在一列中说“A”。 在“B”栏中,我有相应的值(1,2,3)

A1 = x,B1 = 1

我希望我的macros读取Sheet1第一列(即x,y或z)的值,然后将其与Sheet2的列数据(“A”)相匹配,因此从列“B”中选取相应的值Sheet2的。

我一直在尝试,但我无法找出一个办法。 我很抱歉以这种偶然的方式呈现它。 但有人请帮忙? 这是mu尝试的代码..但是这将工作(如果是这样),只有当列中的值(“2012-2013”​​等..)我希望它是dynamic的。

Sub CalC_stat() Dim ws As Sheets Set ws = ThisWorkbook.Sheets(Array("S1 Fuel Consumption", "EF_Stat", "Summary")) Dim i As Integer, j As Integer For j = 7 To 15 Step 4 Select Case ws(1).Range("A" & j).Value Case "2012-2013" For i = 1 To 4 With ws(1).Shapes("Fuel " & i).ControlFormat Select Case .ListIndex Case 1 ws(3).Range("B" & i).Value = Empty Case 2 ws(3).Range("B" & i).Value = ws(2).Range("B3").Value Case 3 ws(3).Range("B" & i).Value = ws(2).Range("C3").Value Case 4 ws(3).Range("B" & i).Value = ws(2).Range("D3").Value End Select End With Next i Case "2013-2014" For i = 5 To 8 With ws(1).Shapes("Fuel " & i).ControlFormat Select Case .ListIndex Case 1 ws(3).Range("B" & i).Value = Empty Case 2 ws(3).Range("B" & i).Value = ws(2).Range("B4").Value Case 3 ws(3).Range("B" & i).Value = ws(2).Range("C4").Value Case 4 ws(3).Range("B" & i).Value = ws(2).Range("D4").Value End Select End With Next i Case "2014-2015" ' and so on.. 

一个VBA的方式来做到这一点:

 Sub test() dim a as Long, b as Long, c as Long For a = 1 to 1048576 'last row of your excel sheet If IsEmpty(Sheet1.Range("A" & a)) Then Exit For Next a For b = 1 to a For c = 1 to a If Sheet1.Range("A" & b) = Sheet2.Range("A" & c) Then Sheet1.Range("B" & b) = Sheet2.Range("B" & c) Exit For End If Next c Next b End Sub