我有一张 Excel 表,其中 x 行的值为 980002。在 x 行之后,A 列中会出现一个新数字。在 B 列中,需要插入一个日期,该日期为 3 行中的同一日期,然后为接下来的 3 行添加一周,直到第一个值 980002 结束。然后对 A 列中的下一个值重复相同的过程。
(编辑):这是我的新代码集,但我无法让它只在 980002 旁边的单元格中写入日期,直到该值结束。相反,它会计算 980002 的行数并写入那么多日期,在每个单元格之间添加 3 行。例如,如果有 5 行值为 980002,那么它将写入 5 个日期,但从第 1 行到第 15 行。
Sub years()
Dim cmdate As Date
Dim i As Integer
Dim rng As Range
Dim cll As Range
i = 0
cmdate = DateSerial(Year(Date), 1, 1)
Set rng = Range("a1", Range("a1").End(xlDown))
For Each cll In rng
If cll.Value = "980002" Then
Do
Range("B1").Offset(i, 0) = cmdate
cmdate = cmdate + 7
i = i + 3
Loop Until Range("a1") <= "980002"
End If
Next cll
End Sub
答案1
为了按所需顺序获取一系列日期,我建议使用非 VBA 方法。
怎么运行的:
- 将初始日期放入单元格
AB1
(也可编辑)。 在单元格中输入此公式
AB2
并填写。=COUNTIF($AA$2:$AA2,$AA2)
单元格中的公式
AC2
。=IF(ISBLANK(AB2),"",IF(AND(AB2>=1,AB2<=3),$AB$1,IF(AND(AB2>=4,AB2<=6),$AB$1+7,IF(AND(AB2>=7,AB2<=9),$AB$1+14))))
为了以后整洁,您可以隐藏该AB
列。
编辑: 我之所以包含这部分,是因为 OP 对如果 ID 集发生变化,所显示的方法将如何工作感到困惑。
- 此示例包含一系列 6 个相似的 ID。
- 细胞内分子式
T2
:
=COUNTIF($S$2:$S2,$S2)
单元格中的公式
U2
:=IF(AND(T2>=1,T2<=3),$T$1,IF(AND(T2>=4,T2<=6),$T$1+7))
根据需要调整公式中的日期计算和单元格引用。