使用宏中的标头映射列

时间:2014-10-14 06:30:56

标签: macros

我有两个工作表。我必须从第二个工作表复制值到第一个工作表,但基于列名称。 为了处理从G栏到C栏的数据,我正在使用 -                   如果Wks2.Range(" C"& I)<> Wks.Range(" G"& J).Value然后                         Wks2.Range(" C"& I).Value = Wks.Range(" G"& J)                   结束如果

但问题在于列序列在第二列中不断变化。因此,映射不能在列字母表上进行硬编码。 我不知道如何使用列标题映射它们。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

您可以在标题中搜索ColumnName。找到匹配项后,检索其行作为参考,

Dim cellRef为整数   设置e =工作表(2)。行(1).find(ColumnName)
  如果不是e就没有了     cellRef = e。列
如果

结束

答案 1 :(得分:0)

行。

因此,假设您的列名在工作表(2)= wks2的行#1中 你必须找到columnName的字母(这里是“C”)
SearchColumn:想要列名     Dim e As Object
    设置e = Nothing
    设置e = wks2.Range(“1:1”)。查找(SearchColumn)
    如果不是e就没有了          Dim colAddress作为字符串
        colAddress = e.Address
        Dim colLetter As String
        colLetter = Mid(colAddress,2,InStr(2,colAddress,“$”,vbTextCompare) - 2)
        如果Wks2.Range(colLetter& I)<> Wks.Range(“G”& J).Value然后
            Wks2.Range(colLetter& I).Value = Wks.Range(“G”& J)
        结束
    否则
        msgbox(“无法找到”& SearchColumn)
    如果

结束

结束如果

首先,我们找到专栏(e) e.address返回找到的列地址 然后colLetter存储它的列字母。

如有任何疑问,请通知我

C