首页 > 解决方案 > 如何复制范围并附加另一个范围

问题描述

我有一个以日期列开头的数据,有 3 个组,每个组有 5 列相同类型的数据。如下图所示。

在此处输入图像描述

这是一个问题,我如何使用 VBA 创建如下所示的输出表。

数据行大小正在改变,所以我必须找到最后一行。

在此处输入图像描述

提前感谢您的回答。

标签: excelvbaappend

解决方案


我不太清楚你想要什么结果。
无论如何,下面是我对你想要什么的猜测:

Sub test()
Range("G2, L2").EntireColumn.Insert
Range("G2, M2, S2").Value = "F"
    
mn = Application.Min(Range("A:A"))
mx = Application.Max(Range("A:A"))
ofst = mx - mn
cnt = Application.CountIf(Range("A:A"), mn)
Set x = Range("A3").Offset(0, 6)
Set y = x

    For i = 1 To 3
        For ii = 1 To cnt
        Range(x, x.Offset(ofst, 0)).Value = ii
        Set x = x.Offset(ofst + 1, 0)
        Next ii
    Set y = y.Offset(0, 6)
    Set x = y
    Next i
    
End Sub

该代码假设基于您的图像屏幕截图,其中日期数据范围重复。
在图像中,日期范围是从 2020 年 1 月 1 日到 2020 年 1 月 18 日。它一次又一次地重复到下一行。

该代码还假定您要向每个组插入一个完整的列,其中每个列都有一个值为“F”的标题。(您的第二张图片显示“F”标题仅适用于第 1 组)。

如果开始日期到结束日期不重复,则代码将失败。例如:
第 3 行至第 9 行,日期从 2020 年 1 月 1 日至 2020 年 1 月 7 日
第 10 行至第 13 行,日期从 2019 年 12 月 25 日至 2019 年 12 月 28 日
第 14 行至第 25 行,日期从 2021 年 6 月 3 日开始至 2021 年 6 月 14 日
,以此类推。

因此代码假设如下:
IF:
从第 3 行到第 9 行,日期从 2020 年 1 月 1 日到 2020 年 1 月 7 日开始
THEN:
从第 10 行到第 16 行,日期从 2020 年 1 月 1 日到 2020 年 1 月 7 日
从第 17 行到23 日,日期从 2020 年 1 月 1 日到 2020 年 1 月 7 日
,以此类推。

请尝试在 vba 编辑器中慢慢逐步运行代码(F8),看看它在工作表上做了什么。


推荐阅读