Excel VBA:使用VBA动态映射列标题
在复制列之前,我尝试将列从一个工作表映射到另一个工作表。我在这里发现了一些有用的代码,特别是在本次讨论中@Nulldev()的代码 但是,在我的例子中,我收到许多带有不同标题、拼写/名称(列中的内容相同)的计划,我需要将这些计划导入到我自己的模板中 这是我尝试过的代码: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
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新手。请告诉我如何应用你的建议。