我手动执行此操作已经太久了,我觉得必须有一种方法可以加快此过程。希望你们能帮助我。
目前我有一个用 VBA 宏编写的 excel 文件,该文件从一张表中复制和粘贴某些列并将它们粘贴到另一张表中。大约有 160 个这样的写法,每个都有大约 10 个复制/粘贴命令。(这个工作簿叫做workbook A
)
目前我的方法包括打开Workbook B
,将数据复制到工作表中Workbook A
,从下拉列表中选择要运行的宏Workbook A
,复制结果并将它们粘贴到“主文件”Workbook C
中。对我来说,问题是地图(即数据的列位置)经常发生变化Workbook B
。我维护一个看起来像这样的“主地图”文件:
Contract# | Purchaser | Price | Quantity | Total
------------------------------------------------
A | B | C | D | E
------------------------------------------------
G | D | C | A | B
------------------------------------------------
等(抱歉,如果这很混乱)
我想做的是让工作表根据 A:地图上的列(粘贴列)和 B:在该特定合同的行中表示的字母(这复制其中的列所代表的字母)。
这可能吗?
其次,如果是这样的话 - 通过指定每个文件的文件补丁来自动执行此操作的选项将非常出色(我对文件位置和名称有明确的分类)。这也可能吗?
- 添加了运行宏的精简示例。
宏很简单,这里有一个示例...
Sub PA979()
Application.ScreenUpdating = False
'Retail $
Sheets("VSR Input").Select
Range("x1:x5004").Copy
Sheets("Sheet1").Select
Range("q4").Select
ActiveSheet.Paste
'PA $
Sheets("VSR Input").Select
Range("y1:y5004").Copy
Sheets("Sheet1").Select
Range("s4").Select
ActiveSheet.Paste
'Q
Sheets("VSR Input").Select
Range("z1:z5004").Copy
Sheets("Sheet1").Select
Range("t4").Select
ActiveSheet.Paste
'Total $
Sheets("VSR Input").Select
Range("aa1:aa5004").Copy
Sheets("Sheet1").Select
Range("u4").Select
ActiveSheet.Paste
Range("A1").Select
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
Dim usedRows As Long
usedRows = ws.Cells(ws.Rows.Count, "U").End(xlUp).Row
Application.ScreenUpdating = False
Sheets("Sheet1").Select
Range("v3").Select
ActiveCell.FormulaR1C1 = "PA#"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell = "979"
ActiveCell.Select
Selection.AutoFill Destination:=ActiveCell.Range(Cells(1, 1), Cells(usedRows - 3, 1)), Type:= _
xlFillDefault
Range("v4").Select
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
ActiveSheet.Range("A1").Select
End Sub `