我几乎没有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
答案 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