我在 Excel 中有以下数据:
start date end date number of repetition
0 515 423
0 484 982
0 456 5,012
0 425 1,063
0 395 2,148
我需要在这样的列中生成例如 423 个相应的开始日期和结束日期的重复:
0
515
0
515
...
然后其余的重复从同一列开始。
答案1
我能够适应 拜伦·沃尔的回答如何在 Excel 中创建动态表?(在 Stack Overflow 上)在两列之间交替:
E2
→=A2
E3
→=B2
E4
→=IF(
INDEX(C$2:C$99, MATCH(E2,A$2:A$99), 1) > COUNTIF(E$2:E2, E2),
E2,
INDEX(A$2:A$99, MATCH(E2,A$2:A$99)+1, 1))
E5
→=IF(
INDEX(C$2:$C99, MATCH(E2,A$2:A$99), 1) > COUNTIF(E$2:E2, E2),
E3,
INDEX(B$2:B$99, MATCH(E2,A$2:A$99)+1, 1))
然后同时选择E4
和E5
并向下拖动。当然,你应该99
用源数据的最后一行号(或更高的数字)替换。
为了测试/演示目的,我
- 将重复次数改为可控的次数,这样我就不必拖到第 828 行(2×413+2)才能第一次看到
32
( ),A3
- 更改了结束日期
B3:B6
,因此很明显B3
,、、B4
和显示在、、、和对面(而不是一遍B5
又一遍),B6
A3
A4
A5
A6
B2
仅用于显示目的,将列
E
分成两部分,因此图像的高度可以是 20 行,而不是 38 行。
这样就可以使日期范围重叠,如上所示,
或者像这样: 或者不重叠,像这样:
开始日期 结束日期 开始日期 结束日期 0 15 1 10 10 25 11 20 20 35 21 30 30 45 31 40 40 55 41 50
但它不允许A
值出现在前几行中作为B
值
像这样: 或者像这样:
开始日期 结束日期 开始日期 结束日期 1 8 1 15 8 15 8 22 15 22 15 29 22 29 22 36 29 36 29 43
(即范围不得连续)。如果您需要处理这样的数据,请将E4
和更改E5
为:
E4
→=IF(
INDEX(C$2:C$99, MATCH(E2,A$2:A$99), 1) >
SUMPRODUCT(--(E$2:E2 = E2), --(MOD(ROW(E$2:E2),2)=0)),
E2,
INDEX(A$2:A$99, MATCH(E2,A$2:A$99)+1, 1))
E5
→=IF(
INDEX(C$2:C$99, MATCH(E2,A$2:A$99), 1) >
SUMPRODUCT(--(E$2:E2 = E2), --(MOD(ROW(E$2:E2),2)=0)),
E3,
INDEX(B$2:B$99, MATCH(E2,A$2:A$99)+1, 1))
为了清楚起见,我将开始日期格式化为蓝色,将结束日期格式化为黄色:
答案2
这可行,但您必须手动调整每一行。您可以根据需要多次自动填充此公式,当重复次数足够多时,它将开始返回空白。要执行第一行(1,516),请使用:
=IF(ROW()<=C$2*2+1,IF(ISEVEN(ROW()),A$2,B$2),"")
调整下一行如下:
=IF(ROW()<=C$3*2+1,IF(ISEVEN(ROW()),A$3,B$3),"")