2014-02-27 30 views
-1

我几乎没有VBA经验,但我过去已经开发了高级代码。我需要一个简单的VBA脚本来处理我正在使用的工作簿。我已经在网络上搜索解决方案,但我一直无法找到我需要的。 我有两个工作表的工作簿(例如:Sheet1和Sheet2)。需要一个VBA脚本来替换一个表单中的数据与另一个表单中的数据

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

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

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

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 sc之前RIPT

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 

Sheet2中运行VBA脚本

+2

而你尝试过什么吗? ([建议阅读](http://whathaveyoutried.com)) – Barranka

回答

1

虽然我与蒂姆同意,我会给你一些leway,第一次发帖,只是试图表现出一定的尝试,给我们的东西来操作后。

试试这个代码:

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 
相关问题