我是VBA的新手。我有两张包含两张纸的纸张表1是标题“材料”下的一列中的缩写词汇表和标题“材料描述”下的一列中的说明。表2是一个数据集,其中包含标题“客户名称”下的列,标题“材料”下的列和标题“已开票值”下的列。
例:
Sheet 1
Material Material Description
X Hot
B Cold
C Temp
-------------------------------------
Sheet 2
Material Invoice Value
X 2.7645
X 3.9
B 4.6
期望的输出:
Sheet 3
Material Invoice Value
Hot 2.7645
Hot 3.9
Cold 4.6
我在尝试着:
对于第1项,我得到了:
Sub Replace()
Dim startrow As Long
Dim custrng As Range
Dim matdatrng As Range
Dim valrng As Range
Dim dscrng As Range
Dim matname As Range
startrow = 2
Set rcustrng = Worksheets("Data").UsedRange.Find("Customer Name", , xlValues, xlWhole)
Set matdatrng = Worksheets("Data").UsedRange.Find("Material", xlValues, xlWhole)
Set valrng = Worksheets("Data").UsedRange.Find("Invoiced Value", xlValues, xlWhole)
Set matname = Worksheets("Names").UsedRange.Find("Material", xlValues, xlWhole)
Set dscrng = Worksheets("Names").UsedRange.Find("Material Description", xlValues, xlWhole)
End Sub
任何和所有的帮助/建议表示赞赏,我希望将此扩展到三个数据集。
我可以通过使用由Mumps提供的以下链接中的代码来完成:
Sub CopyRange()
Application.ScreenUpdating = False
Dim LastRow As Long
LastRow = Sheets("OCData").Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Dim ID As Range
Dim foundID As Range
For Each ID In Sheets("OCData").Range("C2:C" & LastRow)
Set foundID = Sheets("NamesList").Range("B:B").Find(ID, LookIn:=xlValues, lookat:=xlWhole)
If Not foundID Is Nothing Then
Sheets("NamesList").Range("B" & foundID.Row & ":E" & foundID.Row).Copy Sheets("OCData").Range("J" & ID.Row)
End If
Next ID
Application.ScreenUpdating = True
End Sub
令人敬畏的代码,节省了我很多时间。