【问题标题】:Excel VBA : single row of dates separated into new rows for each monthExcel VBA:将单行日期分成每个月的新行
【发布时间】:2014-03-10 16:11:19
【问题描述】:

我有一列日期(范围从 1 月到 12 月),已转置为一行。

我想将这一行日期(按月)分成新行(每月一行)。

如果可能,我想在原始行所在的同一个工作表中执行此操作。 原始数据列是 (C2:C54) 已转置为 (D4:BD4)。 希望以月份分隔的新行在 D5 开始。

我没有在网上找到任何将数据保存在同一个工作表中并在新行中按月份分隔的内容。希望能在这里得到帮助。感谢您提供所有帮助,并提前感谢您。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    如果我正确理解了这个问题,这个 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
    

    【讨论】:

    • mjsqu,谢谢 - 它工作得很好!度过一个愉快的下午。
    • 别担心,我已经评论了它,所以你应该能够更好地理解和重用不同场景中的代码。
    猜你喜欢
    • 1970-01-01
    • 2014-09-07
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多