【发布时间】:2018-09-15 11:23:20
【问题描述】:
我知道这个问题看起来很复杂,但我想做的很简单,我有 2 列:
- 我是我的开始日期
- L 是我的结束日期
- G 是所有日期的位置
我想要做的是获取每个周期的天数(EndDate - StartDate + 1),添加这么多行并将 G 的值更改为每天写入。
我已经编码了下面的部分,但它似乎不正确:
Sub Dates()
Dim LastRow As Long
Dim addrows
Dim FindDates
Dim CountDays
Dim dddays
Dim ws As Worksheet
Dim ws2 As Worksheet
Dim i As Long
Dim ir As Long
Set ws = Sheets("Sheet1")
Set ws2 = Sheets("Sheet2")
With Sheets("Sheet1")
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row - 1
End With
addrows = 2
For ir = 1 To LastRow
FindDates = ws.Range("I" & addrows).Value
CountDays = ws.Range("L" & addrows).Value - ws.Range("I" & addrows).Value + 1
Adddays = 0
For i = 1 To CountDays
ws2.Rows("2:2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ws2.Range("A2").Value = Sheets("Sheet1").Range("A" & addrows).Value
ws2.Range("C2").Value = FindDates + Adddays
ws2.Range("C2").Value = ws.Range("G" & addrows).Value
Adddays = Adddays + 1
Next i
addrows = addrows + 1
Next ir
End Sub
你能帮帮我吗? "ws2.Range("C2").Value = FindDates + Adddays" 给我一个错误 13
【问题讨论】:
-
拜托,你能发布一个你的数据是什么样子的例子吗?
-
FindDates是一个数字吗?您可能应该将类型声明为Dim FindDates as Long之类的。 -
你考虑过使用DataSeries吗?
-
@FoxfireAndBurnsAndBurns 我用截图更新了原始问题,你介意看一下吗?而且没听说过DataSeries,第一次用VBA,你是怎么用的?
-
不确定这是否适合您,但请先手动尝试。我了解您有一组开始日期和结束日期。对于每个开始日期,您要插入一个带有日期的新行,直到到达结束日期。依此类推,您的数组中的所有日期都会如此。某事 LIKE THIS 。关于 DataSeries,如果需要,请手动尝试。 Read this tutorial
标签: vba excel excel-2010 excel-2007