Il problema dei 3 corpi: Attraverso continenti e decadi, cinque amici geniali fanno scoperte sconvolgenti mentre le leggi della scienza si sgretolano ed emerge una minaccia esistenziale. Vieni a parlarne su TopManga.
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Inserimento righe vuote alla variazione di valore di una cella

Ultimo Aggiornamento: 16/11/2017 22:23
Post: 23
Registrato il: 12/11/2014
Città: CASORIA
Età: 44
Utente Junior
Versione Excel 2013 Ufficio, 2013 Casa
OFFLINE
09/11/2017 19:45

Buonasera a tutti,
volevo chiedere un consiglio a chiunque possa essermi d'aiuto.
In un foglio excel devo inserire 3 righe vuote tra quelle piene, solo al cambiamento della data (in colonna C nel file di esempio, ma potrebbe essere anche altra colonna) e se la corrispondente cella nella colonna E è valorizzata. Inoltre nella terza riga vuota dovrebbe farmi il totale del blocco precedente.
Nel file allegato ho inserito gli scenari di com'è il file ora e di come vorrei diventasse. Nei moduli c'è anche una macro che ho inserito, ma che mi inserisce solo righe vuote tra quelle piene
Spero mi possiate essere d'aiuto.
Grazie a tutti
Post: 595
Registrato il: 16/08/2015
Città: CORDENONS
Età: 67
Utente Senior
Excel 2016-32bit Win11
OFFLINE
15/11/2017 01:18

Se ho capito bene la tua richiesta prova ad utilizzare questa mia macro da mettere in un modulo vba:
Option Explicit

Public Sub AggiungiDueRighe()

    Dim ur As Long
    Dim lng As Long
    Dim inizio As Long
    Dim fine As Long
    
    With Worksheets("Dati")
        ur = .Range("C" & Rows.Count).End(xlUp).Row
        For lng = ur To 3 Step -1
            If .Range("C" & lng) <> .Range("C" & lng).Offset(-1, 0) Then    'se c'è cambio data in colonna C
                If .Range("C" & lng).Offset(0, 2) <> "" Then                'se colonna E è valorizzata
                    Rows(lng).Resize(3).Insert xlShiftDown                  'inserisci righe vuote
                End If
            End If
        Next
        ur = .Range("C" & Rows.Count).End(xlUp).Row
        inizio = 2
        For lng = 2 To ur
            If .Range("C" & lng).Offset(1, 0) = "" Then                     'se c'è cella vuota sotto
                fine = .Range("C" & lng).Row + 2
                 'inserisci la formula del totale parziale in colonna J
                .Range("C" & lng).Offset(3, 3).FormulaLocal = "=SOMMA(F" & inizio & ":F" & fine & ")"
                lng = lng + 3
                inizio = lng + 1
            End If
        Next
    End With
    
End Sub

______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
Post: 23
Registrato il: 12/11/2014
Città: CASORIA
Età: 44
Utente Junior
Versione Excel 2013 Ufficio, 2013 Casa
OFFLINE
16/11/2017 19:25

Buonasera Rollis e grazie infinite per la tua risposta, che ho messo nel mio foglio e funziona alla perfezione per la prima parte (ovvero inserire n righe vuote al cambio della data).
Il problema si pone nel momento della somma dei vari subtotali, in quanto il comando continua fino alla riga 9700 e non magari fino all'ultimo valore della colonna F. Ho cercato di capire dove fosse il problema ma ogni volta capisco sempre di più che ne ho di strada da fare [SM=x423023] .....
Se possibile potrei chiederti di vedere dove sia il problema, così magari potrà essermi utile in altre occasioni.
Grazie
Post: 598
Registrato il: 16/08/2015
Città: CORDENONS
Età: 67
Utente Senior
Excel 2016-32bit Win11
OFFLINE
16/11/2017 22:23

Il problema è facilmente rilevabile; se nel tuo foglio fai un Ctrl+Fine noterai che il cursore si ferma nella cella O9655.
Questo significa che tutta zona a partire dalla cella A1 contiene dati o formule. In effetti un po' da per tutto c'è una miriade di formule incomplete inserite in modo irregolare per tutta l'area. Queste formule inficiano il calcolo dell'ultima riga non vuota ed utilizzata dalla macro per fermarsi.
Ora bisogna capire se sono residui di prove e l'area va solamente "bonificata" o se, una volta corrette, le formule servono ancora.
Nel caso di bonifica basta selezionare tutte le righe dalla 31 fino in fondo in basso ed eliminarle e selezionare tutte le colonne dalla G fino in fondo a destra ed eliminare pure quelle. Una volta salvato il file e riaperto questo permetterà alla macro di calcolare correttamente l'ultima riga utile.
Altrimenti puoi usare questa nuova versione della macro che per calcolare l'ultima riga considera solo eventuali valori (date) non il contenuto (formule):

Option Explicit

Public Sub AggiungiTreRighe()

    Dim ur As Long
    Dim nur As Long
    Dim lng As Long
    Dim inizio As Long
    Dim fine As Long
    
    With Worksheets("Dati (3)")
        ur = Range("C:C").Find("", After:=Range("C2"), LookIn:=xlValues, SearchOrder:=1).Row
        nur = ur
        For lng = ur To 3 Step -1
            If .Range("C" & lng) <> .Range("C" & lng).Offset(-1, 0) Then    'se c'è cambio data in colonna C
                If .Range("C" & lng).Offset(0, 2) <> "" Then                'se colonna E è valorizzata
                    Rows(lng).Resize(3).Insert xlShiftDown                  'inserisci righe vuote
                    nur = nur + 3                                           'calcola nuova ultima riga
                End If
            End If
        Next
        inizio = 2
        For lng = 2 To nur
            If .Range("C" & lng).Offset(1, 0) = "" Then                     'se c'è cella vuota sotto
                fine = .Range("C" & lng).Row + 2
                 'inserisci la formula del totale parziale in colonna J
                .Range("C" & lng).Offset(3, 3).FormulaLocal = "=SOMMA(F" & inizio & ":F" & fine & ")"
                lng = lng + 3
                inizio = lng + 1
            End If
        Next
    End With
    
End Sub
[Modificato da rollis13 17/11/2017 00:53]

______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 06:17. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com