【发布时间】:2021-09-07 18:33:36
【问题描述】:
我有一个映射表,用于匹配两个单独工作表(Sheet1 和 Sheet2)的标题。 但是如果我有这样的东西(左侧 3 列,右侧 2 列)怎么办:
-
基本上我希望 POS1 2019 EMP1 等于 HR DEPARTMAENT Employee1 等等。 Sheet1, Sheet2, Mapping 有什么想法我该怎么做? 先感谢您! :)
Public Sub test() Application.ScreenUpdating = False stack "Sheet1", "Sheet2", "Mapping" Application.ScreenUpdating = True End Sub Public Sub stack(ByVal Sheet1 As String, ByVal Sheet2 As String, ByVal Mapping As String) Dim rng As Range, trgtCell As Range, src As Worksheet, trgt As Worksheet, helper As Worksheet Dim rngSrc As Range, rngDest As Range Dim sht As Worksheet Set src = Worksheets("Sheet1") Set trgt = Worksheets("Sheet2") Set helper = Worksheets("Mapping") With src For Each rng In Intersect(.Rows(3), .UsedRange).SpecialCells(xlCellTypeConstants) Dim lkup As Variant With helper lkup = Application.VLookup(rng.Value, .Range("D13:E" & .Cells(.Rows.Count, "D").End(xlUp).Row), 2, False) End With If Not IsError(lkup) Then Set trgtCell = trgt.Range("$B$2:$F$7").Find(lkup, 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) & 3).PasteSpecial End With End If End If Next rng结束于 结束子
【问题讨论】:
-
我无法理解您的问题,抱歉。我读了两遍,但仍然不清楚。您能解释一下(用语言)映射是什么意思吗?我记得我可以从您那里看到另一个类似情况的问题,我问为什么要使用带有参数的
Sub,因为您没有使用任何参数。上面的代码是你自己写的,还是你从网上弄来的,不太了解它的工作原理? -
@FaneDuru 你好!对不起,我的解释很糟糕,我是新手。这是来自互联网的代码,但我已经根据我的情况对其进行了调整。好吧,我有两张纸,每张纸都有一个带有标题的不同表格(但标题是由 3 或 2 个单元格垂直组成的,看起来像另一个小表格),我想匹配它们,并将标题下方的值从 Sheet2 复制到 Sheet1 .假设工作表 1 有一个表,其标题来自 B1:F3。和表 2,B1:F2。我想使用映射表将 B1:F3 (Sheet1) 与 B1:F2(Sheet2) 匹配。还不清楚吗?
-
也许我很累,但仍然不清楚(对我来说......)。如果您将编辑您的问题并发布另一张显示您想要完成的图片,我可能会理解它......
-
完成。我已经在这两张纸上添加了一些带有表格的图片
标签: vba dictionary header mapping match