我有两个工作表。我必须从第二个工作表复制值到第一个工作表,但基于列名称。 为了处理从G栏到C栏的数据,我正在使用 - 如果Wks2.Range(" C"& I)<> Wks.Range(" G"& J).Value然后 Wks2.Range(" C"& I).Value = Wks.Range(" G"& J) 结束如果
但问题在于列序列在第二列中不断变化。因此,映射不能在列字母表上进行硬编码。 我不知道如何使用列标题映射它们。 提前谢谢。
答案 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