【发布时间】:2014-03-10 16:11:19
【问题描述】:
我有一列日期(范围从 1 月到 12 月),已转置为一行。
我想将这一行日期(按月)分成新行(每月一行)。
如果可能,我想在原始行所在的同一个工作表中执行此操作。 原始数据列是 (C2:C54) 已转置为 (D4:BD4)。 希望以月份分隔的新行在 D5 开始。
我没有在网上找到任何将数据保存在同一个工作表中并在新行中按月份分隔的内容。希望能在这里得到帮助。感谢您提供所有帮助,并提前感谢您。
【问题讨论】:
我有一列日期(范围从 1 月到 12 月),已转置为一行。
我想将这一行日期(按月)分成新行(每月一行)。
如果可能,我想在原始行所在的同一个工作表中执行此操作。 原始数据列是 (C2:C54) 已转置为 (D4:BD4)。 希望以月份分隔的新行在 D5 开始。
我没有在网上找到任何将数据保存在同一个工作表中并在新行中按月份分隔的内容。希望能在这里得到帮助。感谢您提供所有帮助,并提前感谢您。
【问题讨论】:
如果我正确理解了这个问题,这个 VBA 将为您完成这项工作:
Sub Dt_Trans()
'I is a numeric value that will offset each picked up date
'by 1 column, and is reset when a new month is picked up
Mprev = Month(Range("D4"))
'Loop through each cell in the range
For Each C In Range("D4:BD4").Cells
'If we reach a new month, set the I value back to zero
'so the new row starts from column D again
If Month(C) <> Mprev Then
I = 0
End If
'Offset D4 by the the month value to move down rows
'I value to move across columns
Range("D4").Offset(Month(C), I) = C.Value
'Iterate I to avoid overwriting
I = I + 1
'Set Mprev so Month can be compared for the next cell
Mprev = Month(C)
Next
End Sub
【讨论】: