Sub MatchData() Dim i As Long, EndRow As Long, Key As String Dim Rng As Range Dim Dic As Object Set Dic = CreateObject("Scripting.Dictionary") '获取数据来源 With Sheets("数据来源") EndRow = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row Set Rng = .Range("A2:Z" & EndRow) Arr = Rng.Value For i = LBound(Arr) To UBound(Arr) Key = CStr(Arr(i, 2)) If Len(Key) > 0 Then '除去空白行 Dic(Key) = Arr(i, 3) End If Next i End With '输出匹配结果 With Sheets("匹配结果") EndRow = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row For i = 2 To EndRow Key = .Cells(i, 2).Text .Cells(i, 3).Value = Dic(Key) '.Cells(i, 4).Value = Dic.Exists(Key) Next i End With Set Dic = Nothing Set Rng = Nothing End Sub