【发布时间】:2017-10-09 15:57:32
【问题描述】:
我需要一个代码来根据匹配的标题将源工作表 (Acct Total) 中的一系列单元格 (H21:H38) 复制到目标工作表 (COS% Tracking) 上的相应列。但我遇到的问题是标题位于源工作表 (Acct Total) 上的单元格 A6 中。我研究了一下,发现这段代码对其他人有用:
Sub CopyHeaders()
Dim header As Range, headers As Range
Set headers = Worksheets("ws1").Range("A1:Z1")
For Each header In headers
If GetHeaderColumn(header.Value) > 0 Then
Range(header.Offset(1, 0), header.End(xlDown)).Copy Destination:=Worksheets("ws2").Cells(2, GetHeaderColumn(header.Value))
End If
Next
End Sub
Function GetHeaderColumn(header As String) As Integer
Dim headers As Range
Set headers = Worksheets("ws2").Range("A1:Z1")
GetHeaderColumn = IIf(IsNumeric(Application.Match(header, headers, 0)), Application.Match(header, headers, 0), 0)
End Function
所以我的问题是我不知道从哪里开始编辑此代码以按我的需要工作。此代码通过使用单元格范围上方的标题来工作,但在我的情况下不会这样做。我会附上图片,希望我不会太含糊。
有人可以根据我的需要帮助我编辑此代码吗?
编辑:日期来源的附加图片。 GL Code Tab
【问题讨论】:
-
` 基于匹配的标题`实际上并没有说明您要复制到哪一列。 ....另外,请将所有代码缩进 4 个空格
-
这些工作表是否在同一个工作簿中,标题是否基于匹配日期匹配,这些是否格式化为日期?另外,源范围总是 H21:H38 吗?
-
您是否考虑改用公式?
-
@AntiDrondert 是的,我有,但我需要它是万无一失的(是的,我知道我使用了错误的“完整”)。目标是将此代码添加到现有的宏“开始新期间”,以便在按下该按钮的那一周开始时,信息将被复制到跟踪选项卡并在那里保持一整年。恐怕有人会将单元格 A6 中的周期周更改为错误的周,并搞砸跟踪选项卡。是的,我意识到如果在执行宏之前日期不正确,宏也会发生这种情况。但我祈祷这不会发生。谢谢。