Serie temporale con anni mancanti

di il
6 risposte

Serie temporale con anni mancanti

Buongiorno a tutti,

ho i seguenti dati:

anno

conteggio_eventi

19521
19551
19573
19582

dove l'anno non è presente è perchè il conteggio eventi è 0 (non si è verificato alcun evento).

Io però ho bisogno di aggiungere il dato con l'anno e il conteggio uguale a 0, possibilmente in modo automatico perchè ho molti anni.

In pratica, dovrei ottenere la seguente tabella:

anno

conteggio_eventi

19521
19530
19540
19551
19560
19573

Etc. Come potrei fare? Grazie mille.

6 Risposte

  • Re: Serie temporale con anni mancanti

    Se sei pratico di macro puoi utilizzare questa mia da inserire in un modulo vbe standard e richiamare all'occorrenza. Ho presunto che la cella “anno” corrisponda a A1. Se diversa basta adeguare le coordinate nella macro che, così com'è, inserisce righe intere. Eventualmente la macro la puoi modificare/adattare per ottenere altre soluzioni di inserimento.

    Option Explicit
    
    Sub InserisciAnniMancanti()
    
        Dim colAnno As String                         'colonna "anno"
        Dim PR     As Long                            'prima riga annualità
        Dim UR     As Long                            'ultima riga
        Dim x      As Long                            'contatore ciclo su colonna "anno"
        Dim diff   As Long                            'differenza tra annualità
        Dim rigaAnno As Long                          'riga annualità da incrementare
        Dim i      As Long                            'contatore ciclo inserimento annualità mancanti
    
        colAnno = "A"                                 '<- adeguare all'esigenza
        PR = 2                                        '<- adeguare all'esigenza
        UR = Cells(Rows.Count, colAnno).End(xlUp).Row
        For x = UR To PR + 1 Step -1
            diff = Cells(x, colAnno) - Cells(x - 1, colAnno)
            If diff > 1 Then
                rigaAnno = x
                Rows(x).Resize(diff - 1).Insert
                For i = 0 To diff - 2
                    Cells(rigaAnno, colAnno) = Cells(x - 1 + i, colAnno) + 1
                    Cells(rigaAnno, colAnno).Offset(, 1) = 0
                    rigaAnno = rigaAnno + 1
                Next i
            End If
        Next x
        
    End Sub
  • Re: Serie temporale con anni mancanti

    Grazie mille,

    non sono pratico ma ci provo :-)

  • Re: Serie temporale con anni mancanti

    01/09/2023 - DavidE ha scritto:


    Come potrei fare?

    Che versione di Excel hai?

  • Re: Serie temporale con anni mancanti

    HO la versione 365. Nel frattempo però ho risolto. Ho creato una serie in automatico per tutto il range di anni necessari.

    Poi ho usato la funzione cerca vert per inserire il valore nell'anno di riferimento (cercandolo nella serie incompleta) e la funzione se errore per inserire uno 0 dove il valore non era presente:

    =SE.ERRORE(CERCA.VERT(D2;A$2:B$52;2;FALSO);0)

    Funziona bene. Grazie cmq a tutti.

  • Re: Serie temporale con anni mancanti

    Ipotizzando i dati che iniziano da A2, per il risultato in un colpo solo:

    =LET(D;A2:B5;A;SCEGLI.COL(D;1);M;MIN(A);S;SEQUENZA(MAX(A)-M+1;1;M;1);STACK.ORIZ(S;CERCA.X(S;A;SCEGLI.COL(D;2);0)))

     La parte evidenziata è quella da modificare alla bisogna, è la tabella di partenza.

    Espande da sola, non serve che trascini.

  • Re: Serie temporale con anni mancanti

    04/09/2023 - Sgrubak ha scritto:


    Ipotizzando i dati che iniziano da A2, per il risultato in un colpo solo:

    =LET(D;A2:B5;A;SCEGLI.COL(D;1);M;MIN(A);S;SEQUENZA(MAX(A)-M+1;1;M;1);STACK.ORIZ(S;CERCA.X(S;A;SCEGLI.COL(D;2);0)))

     La parte evidenziata è quella da modificare alla bisogna, è la tabella di partenza.

    Espande da sola, non serve che trascini.

    Funziona ! Grazie

Devi accedere o registrarti per scrivere nel forum
6 risposte