excel - 如何复制范围并附加另一个范围
问题描述
我有一个以日期列开头的数据,有 3 个组,每个组有 5 列相同类型的数据。如下图所示。
这是一个问题,我如何使用 VBA 创建如下所示的输出表。
数据行大小正在改变,所以我必须找到最后一行。
提前感谢您的回答。
解决方案
我不太清楚你想要什么结果。
无论如何,下面是我对你想要什么的猜测:
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),看看它在工作表上做了什么。
推荐阅读
- php - WooCommerce:如果使用特定的付款方式,则在新订单电子邮件上显示通知
- git - 来自 Github 的超慢克隆
- python - 为什么运行异步协程不会收回控制权?
- android - 如何在谷歌地图中找到“附近的路口”?
- php - 从本地主机切换到服务器后,多部分截击请求中发送的数据接收为空
- reactjs - 在渲染方法中创建条件时不显示芯片按钮
- javascript - 从 JSON api 检索特定键名时面临问题
- sql - Postgresql:在分隔符的第一个实例之后提取子字符串
- c# - 如何使用 x、y、width 和 height 属性绘制六边形?
- azure - 我可以将应用服务中的默认 Azure 域与 Azure 应用程序网关一起使用吗?