Como gerar repetições no excel?

1

Eu tenho os seguintes dados no 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

Eu preciso gerar, por exemplo, 423 repetições da data de início e da data de término correspondentes em uma coluna como esta:

0
515
0
515
...

E o resto das repetições começam depois disso na mesma coluna.

    
por Ferra Xu 10.07.2015 / 19:57

2 respostas

3

Eu consegui me adaptar Byron Wall 's answer para Como criar uma tabela dinâmica no Excel? (no Stack Overflow) alternar entre as duas colunas:

  • E2=A2
  • E3=B2
  • E4=IF(
    INDEX(C$2:C$99, MATCH(E2,A$2:A$99), 1) > COUNTIF(E$2:E2, E2),
    E2,
    %código%
  • 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),
    %código%

Em seguida, selecione E3, e INDEX(B$2:B$99, MATCH(E2,A$2:A$99)+1, 1)) juntos e arraste para baixo. É claro que você deve substituir E4 pelo número da última linha de seus dados de origem (ou algo maior).

Para fins de teste / demonstração, eu

  • alterou as contagens de repetição para algo gerenciável, então eu não teria que arrastar até a linha 828 (2 × 413 + 2) só para ver E5 ( 99 ) pela primeira vez,
  • alterou as datas de término 32 , Assim, seria óbvio que A3 , B3:B6 , B3 e B4 estavam sendo exibidos oposto a B5 , B6 , A3 e A4 (e não A5 repetidas vezes),
  • apenas para fins de exibição, divide a coluna A6 em duas partes, então a imagem poderia ter 20 linhas de altura, em vez de 38.

Issopermitequeosintervalosdedatassesobreponham,comoacima,

   orlikethis:                  ortobenon-overlapping,likethis:

startdateenddatestartdateenddate01511010251120203521303045314040554150

MasnãopermitequevaloresdeB2tenhamocorridonaslinhasanteriorescomoEvalues

   likethis:                        orlikethis:

startdateenddatestartdateenddate18115815822152215292229223629362943

(istoé,osintervalosnãodevemsercontíguos).Sevocêprecisarmanipulardadoscomoesse,altereAeBpara:

  • E4E5
    E4
    =IF(
    INDEX(C$2:C$99,MATCH(E2,A$2:A$99),1)>
    %código%
  • 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(
    %código%

Formateiasdatasdeiníciocomoazuiseasdatasdetérminocomoamarelasparamaiorclareza:

    
por 11.07.2015 / 20:55
1

Isso funciona, mas você precisa ajustar manualmente para cada linha. Você pode preencher essa fórmula automaticamente, no entanto, quantas vezes precisar, ela começará a retornar em branco quando forem feitas repetições suficientes. Para fazer a primeira linha (1,516) você usa:

=IF(ROW()<=C$2*2+1,IF(ISEVEN(ROW()),A$2,B$2),"")

O ajuste para a próxima linha é semelhante a:

=IF(ROW()<=C$3*2+1,IF(ISEVEN(ROW()),A$3,B$3),"")
    
por 10.07.2015 / 23:20