我有一个非常典型的场景,需要将来自不同工作表(在同一工作簿中)的两列复制到单个工作表 .
Source workbook name: Mycalc.xlsm
Worksheets name: Sheet1,sheet2,sheet3(还有其他工作表,但仅针对上述内容执行操作)
Target Workbook Name: Mycalc.xlsm
Target worksheet name: 合并
Condition:
-
不能为工作簿中的所有工作表执行每个工作表作为仅在上述三个工作表上执行的操作 .
-
列 Headers 在所有工作表中的顺序不一定相同,但 Headers 相同 .
Result Expected: 结果是来自所有3张纸的合并数据以及提示数据复制的纸张的列表名称 .
我不是这方面的专家,因此无论我取得了什么,我都不会粘贴代码 . 添加它,我已经通过在命名范围中添加工作表名称作为列表(在工作簿中我创建了一个具有工作表名称列表的表格,并且在该范围内执行每个工作簿) .
stackoverflow的专家,请帮帮我 .
问候,
玛尼
2 回答
我已经使用了命名范围的概念作为工作表名称 . 经过多次跨栏和耗时的研究 . 这是一个简单的,编译和工作的代码 .
Dim TransCol(1到2)As String
Dim ImportWS作为工作表
Dim SheetsName作为范围
Dim FindColumn,TargetColumn As Range
Dim RowCount一样长
Dim RowIndex,i,Column As Long
Dim LastUsedRow一样长
Dim LastUsedRowCount As Variant
TransCol(1)=“ISIN”
TransCol(2)=“当天调整”
对于每个SheetsName在sheet3.Range(“tblSheetNames”) . 单元格
如果Len(SheetsName.Value)> 0那么
设置ImportWS = ThisWorkbook.Sheets(SheetsName.Value)
ImportWS.Activate
对于Column = 1到2
设置FindColumn = ImportWS.Cells.Find(TransCol(Column),searchorder:= xlByRows,searchdirection:= xlNext)
RowCount = FindColumn.Cells(200000,1).End(xlUp).Row
设置TargetColumn = sheet3.Cells.Find(TransCol(Column),searchorder:= xlByRows,searchdirection:= xlNext)
对于i = FindColumn.Row To RowCount
LastUsedRow = sheet3.Cells(200000,TargetColumn.Column).End(xlUp).Row
sheet3.Cells(LastUsedRow 1,TargetColumn.Column).Value = ImportWS.Cells(i 1,FindColumn.Column).Value
下一个我
下一栏
万一
下一个
结束子
**注意:**我已将代码移动到模块而不是后面的工作簿代码 .
很高兴解释,如果需要更多信息 . 谢谢你们 .
问候,
玛尼
你不值得从头开始,没有统一化或努力,否则无处可去 .
因为你真的很难评论代码 . 如果我_2333391_回应 .