需要VBA脚本将一张表中的数据替换为另一张表中的数据

时间:2014-02-27 21:25:16

标签: excel vba excel-vba

我几乎没有VBA经验,但我过去开发过高级代码。我需要一个简单的VBA脚本来处理我正在使用的工作簿。我在网上搜索了解决方案,但我找不到我需要的确切内容。 我有一个包含两个工作表的工作簿(例如:Sheet1和Sheet2)。

•Sheet1有两列(列A(包含名称)和列B(包含数值)。例如:

A        B
Smith   1236
Jones   7643
White   2344
Thomas  9022
Greene  5221
Holmes  3287
Jackson 9932

•Sheet2有多列,但我需要在Sheet2中选择一个列(例如ColumnJ)。 ColumnJ中的单元格可能包含也可能不包含Sheet1 / ColumnA中的一个名称。如果名称出现在Sheet2 / ColumnJ中的单元格中。我需要用Sheet1 / ColumnB中的Numerical值替换该名称

A        B      C       D       …       J        …      Z
Smith   1236    Data    Data    Data    White   Data    Data
Jones   7643    Data    Data    Data    Jackson Data    Data
White   2344    Data    Data    Data    Wilson  Data    Data
Thomas  9022    Data    Data    Data    Holmes  Data    Data
Greene  5221    Data    Data    Data    Black   Data    Data
Holmes  3287    Data    Data    Data    Jones   Data    Data
Jackson 9932    Data    Data    Data    White   Data    Data

Sheeet2在运行VBA脚本之前

A       B        C    D …   J   …   Z
Data    Data    Data    Data    Data    2344    Data    Data
Data    Data    Data    Data    Data    9932    Data    Data
Data    Data    Data    Data    Data        Data    Data
Data    Data    Data    Data    Data    3287    Data    Data
Data    Data    Data    Data    Data        Data    Data
Data    Data    Data    Data    Data    7643    Data    Data
Data    Data    Data    Data    Data    2344    Data    Data

运行VBA脚本后的Sheet2

1 个答案:

答案 0 :(得分:1)

虽然我同意蒂姆的意见,但我会给你一些余地,第一篇文章,只是尝试展示一些尝试,给我们一些操纵的东西。

试试这段代码:

Sub DropThat()

Application.ScreenUpdating = False
Dim name As String, value As Long, i As Long, lastrow1 As Long, lastrow2 As Long
i = 1
j = 1
lastrow1 = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
lastrow2 = Sheets("Sheet2").Range("J" & Rows.Count).End(xlUp).Row
Do While i < lastrow1 + 1
name = Sheets("Sheet1").Cells(i, 1).value
value = Sheets("Sheet1").Cells(i, 2).value
Do While j < lastrow2 + 1
If Sheets("Sheet2").Range("J" & j) = name Then
    Sheets("Sheet2").Range("J" & j) = value
End If
j = j + 1
Loop
j = 1
i = i + 1
Loop
Application.ScreenUpdating = True
End Sub