【发布时间】:2019-05-18 22:21:19
【问题描述】:
我有一个代码,它从工作表 1 中获取标题及其数据,在工作表 2 中找到这些标题并将数据粘贴到工作表之间标题匹配的位置。
但是,如果我的工作表 1 中的标题在工作表 2 中不存在,我想在另一个工作表中包含一个映射表,它将不同的标题转换为相似的标题。但我想在映射表中明确列出这些标题。 我无法找到映射然后粘贴到新标题中,因为我不想替换或更改工作表 1 中的标题。
Option Explicit
Sub stack(from_ws, to_ws, mapping)
Dim rng As Range, trgtCell As Range
Dim src As Worksheet
Dim trgt As Worksheet
Dim helper As Worksheet
Set src = Worksheets(from_ws)
Set trgt = Worksheets(to_ws)
Set helper = Worksheets(mapping)
Application.ScreenUpdating = False
With src
For Each rng In Intersect(.Rows(1), .UsedRange).SpecialCells(xlCellTypeConstants)
'mapping code to go here
Set trgtCell = trgt.Rows(1).Find(rng.value, LookIn:=xlValues, lookat:=xlWhole)
If Not trgtCell Is Nothing Then
.Range(rng.Offset(1), .Cells(.Rows.count, rng.Column).End(xlUp)).copy
With trgt
.Range(Split(trgtCell.Address, "$")(1) & .Cells(.Rows.count, trgtCell.Column).End(xlUp).row + 1).PasteSpecial
End With
End If
Next rng
End With
Application.ScreenUpdating = False
End Sub
我在 BU:BW 中有一个名为“映射”的工作表。 因此,如果在 sheet 1 中我的标题是 id ,我想在 sheet2 中找到 segment1 并从 sheet1 中粘贴数据,标题 id。
+----------+-----------------+------------+
| Tab Name | Original Header | New Header |
+----------+-----------------+------------+
| sheet1 | id | segment1 |
| sheet1 | id2 | segment2 |
+----------+-----------------+------------+
【问题讨论】: