如何在 Excel 中生成重复?

如何在 Excel 中生成重复?

我在 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))

然后同时选择E4E5并向下拖动。当然,你应该99用源数据的最后一行号(或更高的数字)替换。

为了测试/演示目的,我

  • 将重复次数改为可控的次数,这样我就不必拖到第 828 行(2×413+2)才能第一次看到32( ),A3
  • 更改了结束日期B3:B6,因此很明显B3,、、B4和显示在、、、和对面(而不是一遍B5又一遍),B6A3A4A5A6B2
  • 仅用于显示目的,将列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),"")

相关内容