如何根据映射的工作表更改列名称

时间:2014-05-29 07:13:18

标签: excel vba excel-vba

我有3张名为'sheet1','sheet2'和'mapping'表。

'Sheet1'包含实际数据(可以说原始数据和列号/标题名称可以不同)

'Sheet2'构成主工作表列(Sheet1数据头应该按照工作表2)

'mapping'包含sheet1和sheet2之间的映射

我正在寻找可以根据映射表更新sheet1列的代码。 如果映射表说“AB”=“C1”,则“sheet1”列应更新为“C1”

| AB| AF| AL|   | C1| C2| C3|   |sheet1 column_name |  Sheet2 column_name|
|-----------|   |-----------|   |     AB            |    C1              |
| 1 | f | y |   |   |   |   |   |     AL            |    C2              | 
|---------- |   |---------- |   |     AF            |    C3              | 
| 2 | g | Q |   |   |   |   |   -----------------------------------------
|---------- |   |---------- |   
| 6 | i | e |   |   |   |   |   
-------------   -------------   
       "Sheet 1"     "Sheet 2"                  "Mapping"

我尝试过使用matchfunction但没有成功。还有其他想法吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

使用以下代码..它可以解决问题或提出想法。

Sub renameworksheetcolumnmatach()
Dim test, findtext  As Variant
Sheets("SHEET1").Activate
Dim i, j  As Integer
For i = 1 To 36
findtext = Sheets("SHEET1").Cells(1, i).Value
On Error Resume Next
If Application.WorksheetFunction.Match(findtext,     Sheets("MAPPING").Range("A1:A100"), 0) Then
Set rngx = Worksheets("mAPPING").Range("A1:A100").Find(findtext,                LookAt:=xlWhole)
c = rngx.Address
newcolval = Sheets("Interface").Range(c).Offset(0, 1).Value
If newcolval = "" Then
Cells(1, i).Interior.ColorIndex = 35
GoTo P
End If
Sheets("SHEET1").Cells(1, i) = newcolval
End If
P:
Next i
End Sub