Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA:使用VBA动态映射列标题_Excel_Vba_Visual Studio Code_Microsoft Dynamics - Fatal编程技术网

Excel VBA:使用VBA动态映射列标题

Excel VBA:使用VBA动态映射列标题,excel,vba,visual-studio-code,microsoft-dynamics,Excel,Vba,Visual Studio Code,Microsoft Dynamics,在复制列之前,我尝试将列从一个工作表映射到另一个工作表。我在这里发现了一些有用的代码,特别是在本次讨论中@Nulldev()的代码 但是,在我的例子中,我收到许多带有不同标题、拼写/名称(列中的内容相同)的计划,我需要将这些计划导入到我自己的模板中 这是我尝试过的代码: Sub ModdedMap() Dim Sh1 As Worksheet, Sh2 As Worksheet, Sh3 As Worksheet Dim HeadersOne As Range, Headers

在复制列之前,我尝试将列从一个工作表映射到另一个工作表。我在这里发现了一些有用的代码,特别是在本次讨论中@Nulldev()的代码

但是,在我的例子中,我收到许多带有不同标题、拼写/名称(列中的内容相同)的计划,我需要将这些计划导入到我自己的模板中

这是我尝试过的代码:

Sub ModdedMap()

    Dim Sh1 As Worksheet, Sh2 As Worksheet, Sh3 As Worksheet
    Dim HeadersOne As Range, HeadersTwo As Range
    Dim hCell As Range

    With ThisWorkbook
        Set Sh1 = .Sheets("Sheet1") 'Modify as necessary.
        Set Sh2 = .Sheets("Sheet2") 'Modify as necessary.
        Set Sh3 = .Sheets("Interface") 'Modify as necessary.
    End With

    Set HeadersOne = Sh3.Range("A1:A" & Sh3.Range("A" & Rows.Count).End(xlUp).Row)

    Application.ScreenUpdating = False

    For Each hCell In HeadersOne

        SCol = GetColMatched(Sh1, hCell.Value)
        TCol = GetColMatched(Sh2, hCell.Offset(0, 1).Value)
        LRow = GetLastRowMatched(Sh1, hCell.Value)

        For Iter = 2 To LRow
            Sh2.Cells(Iter, TCol).Value = Sh1.Cells(Iter, SCol).Value
        Next Iter

    Next hCell

    Application.ScreenUpdating = True

End Sub

Function GetLastRowMatched(Sh As Worksheet, Header As String) As Long
    ColIndex = Application.Match(Header, Sh.Rows(1), 0)
    GetLastRowMatched = Sh.Cells(Rows.Count, ColIndex).End(xlUp).Row
End Function

Function GetColMatched(Sh As Worksheet, Header As String) As Long
    ColIndex = Application.Match(Header, Sh.Rows(1), 0)
    GetColMatched = ColIndex
End Function
在工作表1中

  A                 B            C 
1 applicationname applicationid number 
2 applcation1          1          123 
3 applcation2          2          454 
4 applcation3          3          897
在我的地图上

     A                       B
 1   Application Name        App Name
 2   Application ID          AppID
 3   Technology              Tech
 4   Business Criticality    Bus Criticality
 5   IT Owner                IT Admin
 6   Business Owner        BusOwner
 7.  Application number.    App ID
 8   IT User.       IT Admin
在工作表2中

  A                 B            C 
1  appid           num        appname              
2   1              123        applcation1          
3   2              454        applcation2          
4   3              897        applcation3
在我的界面表上,您会注意到我也指出了IT User=“IT Owner”和IT Admin=“IT Owner”。 我还指出了应用程序ID和应用程序编号=应用程序ID

我希望代码检查工作表1如果标题读取应用程序编号或应用程序ID或任何其他设置为等于“应用程序ID”的内容,则应将该列提取到工作表2。然后转到下一个标题


谢谢

您的问题与链接的问题有何不同?这是不同的,代码不允许我将不同的标题等同于同一个输出。请将其设置为逗号分隔的列表,在逗号上拆分,并在生成的数组中循环。谢谢@Warcupine,我是VBA新手。请告诉我如何应用你的建议。