我正在尝试根据另一个文档上的映射表更新列表中的单元格。每个月,我都会收到一份需要执行此操作的清单。映射表将是不变的,但源数据会改变,所以我会有这样的东西
Column A Column B
Name Description
Test1 Test for SO
Test2 Test2 for SO
...
Test100 Test100 for SO
Run Code Online (Sandbox Code Playgroud)
我将有一个相应的映射表,我希望宏根据下面的映射表评估 A 列中的每个单元格,并更新为映射表第二列中的值(位于不同的工作表上),有吗有办法做到这一点吗?
Column A Column B
Name Real Name
Test1 Fund1
Test2 Fund2
...
Test100 Fund100
Run Code Online (Sandbox Code Playgroud)
基本上,数据选项卡(第一张表)的最终输出将是:
Column A Column B
Name Description
Fund1 Test for SO
Fund2 Test2 for SO
...
Fund100 Test100 for SO
Run Code Online (Sandbox Code Playgroud)
提前致谢。我已将两张表中 A 列的范围命名为列,但我真的不知道什么函数允许执行此操作?我开始为每个陈述做一些事情,但被难住了。
你可以试试这个:
Option Explicit
Sub map()
Dim SourceData As Worksheet: Set SourceData = ThisWorkbook.Sheets("Sheet1") 'Change the name of the sheet
Dim Mapping As Worksheet: Set Mapping = ThisWorkbook.Sheets("Sheet2") 'Change the name of the sheet
Dim SourceDataLstr As Long, MappingLstr As Long
Dim i As Long, j As Long
Dim RawDataKey As String, MappingKey As String
SourceDataLstr = SourceData.Range("A" & Rows.Count).End(xlUp).Row 'Find the lastrow in the Source Data Sheet
MappingLstr = Mapping.Range("A" & Rows.Count).End(xlUp).Row 'Find the lastrow in the Mapping Sheet
With SourceData
For i = 2 To SourceDataLstr
RawDataKey = .Cells(i, "A").Value
For j = 2 To MappingLstr
MappingKey = Mapping.Cells(j, "A").Value
If MappingKey = RawDataKey Then
.Cells(i, "A").Value = Mapping.Cells(j, "B").Value
Exit For
End If
Next j
Next i
End With
End Sub
Run Code Online (Sandbox Code Playgroud)