Risultati da 1 a 5 di 5

Discussione: Spostamento righe con riferimenti fissi



  1. #1
    L'avatar di Loretta
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Bari
    Età
    34
    Messaggi
    90
    Versione Office
    2013
    Likes ricevuti
    0
    Likes dati
    31

    Spostamento righe con riferimenti fissi

    Cari amici,
    ho qualche difficoltà con i riferimenti fissi..:277:

    - nel foglio A ho una tabella di 250850 righe e 243 colonne.
    - nel foglio B voglio ricopiare la stessa tabella solo che le righe devono essere spostate (vedi dettaglio sotto...) mentre sulle colonne non vi è alcuna variazione.
    - tutti gli spostamenti delle righe si ripetono in modo analogo ogni 173 righe.

    Dettaglio spostamento righe:
    la riga 1 di A occupa la posizione 173 in B, la riga 2 di A occupa la posizione 172 di B, la riga 3 di A occupa la posizione 171 di B e così via…

    Questo spostamento di righe nel foglio B si ripete per ogni gruppo di 173 righe del foglio A.:256:

    In allegato vi è il file excel: http://dropcanvas.com/s0sut


    Di seguito ho ricopiato qualche cella del file completo (allegato) per spiegare meglio ciò che sto cercando di ottenere.:262:
    grazie :43:

    Foglio A

    A B C
    1 -0.925
    -0.924
    -0.93
    2 -0.935
    -0.935
    -0.933
    3 -0.946
    -0.946
    -0.944
    4 -0.949 -0.948 -0.947
    …. ….
    172 -0.315
    -0.236
    -0.047
    173 -0.232
    -0.213
    -0.12


    Foglio B

    A B C
    1 -0.232
    -0.213
    -0.12
    2 -0.315
    -0.236
    -0.047
    170 -0.949 -0.948 -0.947
    171 -0.946
    -0.946
    -0.944
    172 -0.935
    -0.935
    -0.933
    173 -0.925
    -0.924
    -0.93

  2. #2

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7159
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2065
    Likes dati
    1300

    Re: Spostamento righe con riferimenti fissi

    Ciao,
    non si riesce a scaricare il file .... chiede di essere loggati.
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  3. #3
    L'avatar di Loretta
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Bari
    Età
    34
    Messaggi
    90
    Versione Office
    2013
    Likes ricevuti
    0
    Likes dati
    31

    Re: Spostamento righe con riferimenti fissi


  4. #4

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4022
    Versione Office
    2013
    Likes ricevuti
    1228
    Likes dati
    923

    Re: Spostamento righe con riferimenti fissi

    Ciao a tutti,

    @Loretta

    Prova con questo codice (certo che su 250000 righe ci impiegherà un pò di tempo) :

    Codice: 
    Option Explicit
    
    
    'La macro si può avviare anche con la combinazione
    'di tasti:
    'CTRL + s
    
    
    Sub Sposta_righe()
    Dim Matrice(), uRiga As Long, uCol As Long, i As Long, j As Long
    Dim WksA As Worksheet, WksB As Worksheet, Salto As Double, Giri As Long
    Dim RigaMatr As Long
    
    
    Set WksA = Worksheets("A")
    Set WksB = Worksheets("B")
    
    
    With WksA
        uRiga = .UsedRange.Rows.Count
        uCol = .UsedRange.Columns.Count
        ReDim Matrice(1 To uRiga, 1 To uCol)
        Salto = uRiga / 173
        If Salto <> Int(Salto) Then
            MsgBox "Il numero di righe non è divisible per 173!"
            Exit Sub
        End If
        RigaMatr = 1
        For Giri = 1 To Salto
            For i = Giri * 173 To (Giri - 1) * 173 + 1 Step -1
                For j = 1 To uCol
                    Matrice(RigaMatr, j) = .Cells(i, j).Value
                Next j
                RigaMatr = RigaMatr + 1
            Next i
        Next Giri
    End With
    
    
    With WksB
        .Cells.ClearContents
        For i = 1 To uRiga
            For j = 1 To uCol
                .Cells(i, j).Value = Matrice(i, j)
            Next j
        Next i
    End With
    
    
    Set WksA = Nothing
    Set WksB = Nothing
    MsgBox "Done!!!"
    End Sub
    N.B.
    Il codice lo puoi avviare con la combinazione di tasti: CTRL + s
    Comunque ti viene ricordato all'apertura del file.

    P.S.
    Se il numero totale di righe non è divisibile per 173, spunta un messaggio di errore e si esce dall'esecuzione del codice.

    Il file lo puoi scaricare da qui:
    http://dropcanvas.com/v4t6l

    [EDIT]
    Sposto la discussione nella sezione "Excel VBA e Macro" perchè credo che mettendo formule in un range di 250000 righe per più di 200 colonne, il file non sarebbe utilizzabile a causa dell'eccessivo rallentamento di esecuzione.

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  5. I seguenti 2 utenti hanno dato un "Like" a cromagno per questo post:


  6. #5
    L'avatar di Loretta
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Bari
    Età
    34
    Messaggi
    90
    Versione Office
    2013
    Likes ricevuti
    0
    Likes dati
    31

    Re: Spostamento righe con riferimenti fissi

    Ciao cromagno,
    ho eseguito il codice...non ha impiegato molto tempo :18:

    grazie :43:

Discussioni Simili

  1. [Risolto] Spostamento contenuto celle in automatico.
    Di roky48 nel forum Domande su Excel in generale
    Risposte: 9
    Ultimo Messaggio: 26/10/16, 01:13
  2. spostamento tra celle
    Di Al Pal nel forum Domande su Excel in generale
    Risposte: 8
    Ultimo Messaggio: 08/07/16, 11:36
  3. Aggiungere e eliminare righe senza alterare i riferimenti delle formule
    Di lizz1183 nel forum Domande su Excel VBA e MACRO
    Risposte: 13
    Ultimo Messaggio: 06/07/16, 17:12
  4. Risposte: 4
    Ultimo Messaggio: 29/04/16, 10:15
  5. media con riferimenti fissi
    Di Loretta nel forum Domande su Excel in generale
    Risposte: 5
    Ultimo Messaggio: 27/01/16, 13:31

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •