Risultati da 1 a 9 di 9

Discussione: Popolare colonna in base al contenuto superiore



  1. #1

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

    Popolare colonna in base al contenuto superiore

    Salve amici,
    mi sto perdendo con un codice vba in una cosa che pensavo banale.
    In pratica ho una colonna con migliaia di righe in cui ogni tot righe è presente un dato (nell'esempio ho messo il nome di un colore: giallo, rosso, verde, nero ... ma si tratta di centinaia di dati che si ripetono) tutte le altre celle sono vuote.
    Vorrei una sub che mi riempisse le celle vuote con la stessa stringa presente nella cella superiore fino a che incontra il dato successivo poi riprendesse riempiendomi le altre celle vuote con la successiva stringa sovrastante.
    Per una migliore comprensione della mia richiesta allego un file (colonna A com'è , colonna D cosa vorrei ottenere).
    Mi sembra anche una cosa facile ma adesso non mi viene. :92:
    File Allegati File Allegati
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  2. #2
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    809
    Versione Office
    2016 64bit
    Likes ricevuti
    142
    Likes dati
    52
    Chiaramente qualcosa così funziona ma come fai a determinare quante volte deve essere ripetuta l'ultima riga (quella con NERO) ?
    Codice: 
    Option Explicit
    
    
    Sub test()
    
    
        Dim x As Long
        Dim ur As Long
        
        x = 3
        ur = Range("A" & Rows.Count).End(xlUp).Row
        
        Do While Range("A" & x) <> "" And x < ur
            x = x + 1
            Do While Range("A" & x) = ""
                Range("A" & x) = Range("A" & x).Offset(-1, 0).Value
                x = x + 1
            Loop
        Loop
    
    
    End Sub
    Al posto di calcolare l'ultima riga potresti metterci un "tappo" e fare il test su questo nel primo Loop
    Codice: 
    Sub test_tappo()
    
        Dim x As Long
        
        x = 3
        Do
            x = x + 1
            Do While Range("A" & x) = ""
                Range("A" & x) = Range("A" & x).Offset(-1, 0).Value
                x = x + 1
            Loop
        Loop Until Range("A" & x) = "tappo"
    
    
    End Sub
    poi magari ci aggiungi una ultima riga nella macro e lo elimini.

  3. I seguenti 2 utenti hanno dato un "Like" a rollis13 per questo post:


  4. #3
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    864
    Versione Office
    2000 - 2013
    Likes ricevuti
    285
    Likes dati
    160
    Salve, Ges;
    temo di aver scelto la strada più impervia, ma, tant'è.

    Codice: 
    Option Explicit
    
    Sub Copia_in_Blank()
    Application.ScreenUpdating = False
    Dim NRc As Long, x As Long
    Dim Rcd As String
    Const PRc As Byte = 3
    Const Rcr As Byte = 22
        
        NRc = Range("A" & Rows.Count).End(xlUp).Row
            Rcd = Cells(PRc, 1)
                For x = 4 To NRc + Rcr
                        If Cells(x, 1) = "" Then
                            Cells(x, 1) = Rcd
                        Else
                            Rcd = Cells(x, 1)
                        End If
                Next x
    Application.ScreenUpdating = True
        Cells(3, 1).Select
    End Sub
    Poi, se lo ritieni opportuno, possiamo ottimizzare il Codice.


    A disposizione.

    Giuseppe
    Windows XP Excel 2000 - Windows 10 Excel 2013

  5. I seguenti utenti hanno dato un "Like"

    ges

  6. #4

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7106
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2059
    Likes dati
    1296
    Valide ed efficaci entrambi, grazie. :286:
    Resta il problema che per l'ultimo dato riempie tutte le celle ... al limite le cancello a mano oppure posso pensare ad una voce (per esempio "FINE") che dopo di questa non scrive più nulla.
    Comunque ripeto le due sub sono ottime.
    @ GiuseppeMn - forse la tua - ripeto validissima - si può sfoltire nell'eliminazione delle costanti, che dici?
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  7. #5
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    864
    Versione Office
    2000 - 2013
    Likes ricevuti
    285
    Likes dati
    160
    Salve, Ges;
    Grazie del Riscontro e dell'Apprezzamento.

    Per quanto concerne le Costanti:
    - PRc serve solo per definire il primo Record da valutare; se si conosce già la Riga di partenza, si può eliminare tranquillamente
    - Rcr serve per definire l'ultimo Record da copiare; proprio per evitare di riempire tutte le Celle
    Rcr l'ho definita, arbitrariamente, in base al numero di "Nero" presenti in Colonna "D".

    A margine di quanto sopra, vorrei solo scusarmi con @ rollis13 per la sovrapposizione alla Sua Risposta; sinceramente non avevo visto la sua proposta che considero assolutamente interessante.


    A disposizione.

    Giuseppe
    Windows XP Excel 2000 - Windows 10 Excel 2013

  8. #6
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3200
    Versione Office
    Excel2010
    Likes ricevuti
    624
    Likes dati
    154
    Ciao Ges
    ma, molto terra-terra, come fai a non sapere qual'è l'ultima cella? Nel tuo esempio di fermi alla riga 91. In base a quale criterio? Ci sarà a monte un motivo per cui ti fermi lì. Sicuramente saprai a priori in quante celle devi scrivere, cioè qua'è l'ultima riga da validare. Con un semplice ciclo puoi completare il lavoro. O mi son perso qualcosa per strada?

    Ciao,
    Mario

  9. #7

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7106
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2059
    Likes dati
    1296
    Citazione Originariamente Scritto da Marius44 Visualizza Messaggio
    ..Con un semplice ciclo puoi completare il lavoro....
    ...
    Hai perfettamente ragione, non ci avevo pensato, grazie Mario.
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  10. #8
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    809
    Versione Office
    2016 64bit
    Likes ricevuti
    142
    Likes dati
    52
    @ges, nella mia 2' versione della macro ti avevo già suggerito di provare inserendo un "tappo" che tu hai chiamato "FINE" :286:

    @GiuseppeMN, non ti preoccupare (mai) per eventuali sovrapposizioni, credo di poter dire che qui si viene per dare delle (semplici) soluzioni viste con menti diverse. Diverso sarebbe se prima c'è da fare complicati ragionamenti per poi prendere decisioni su come procedere, solo in questo un sovrapposizione potrebbe distrarre, ma in ogni caso, secondo me, se porta idee utili, comunque è un bene :261:.

  11. #9

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2801
    Versione Office
    Excel 2013
    Likes ricevuti
    1019
    Likes dati
    977
    Io, quando mi capita procedo così:

    Seleziono A3:A91
    F5 (vai a) / Speciale / Celle vuote
    = seleziono la cella superiore + CTRL + ENTER
    Copia / incolla speciale valori

    senza codice e abbastanza velocemente in quanto lo uso spesso (trucco letto su un libro "i portabili Mondadori" - "Le macro di Excel" del 2004)

  12. I seguenti utenti hanno dato un "Like"


Discussioni Simili

  1. Risposte: 13
    Ultimo Messaggio: 02/03/17, 11:45
  2. [Risolto] popolare un data base con un menù a tendina con funzione indiretto
    Di raffaelealta nel forum Domande su Excel VBA e MACRO
    Risposte: 4
    Ultimo Messaggio: 08/02/17, 09:58
  3. Risposte: 2
    Ultimo Messaggio: 30/01/17, 16:19
  4. Come popolare i campi di TextBox in base a una ListBox
    Di ges nel forum Domande su Excel VBA e MACRO
    Risposte: 13
    Ultimo Messaggio: 14/09/16, 15:31
  5. Completare una colonna in base ad un'altra colonna
    Di sassa nel forum Domande su Excel in generale
    Risposte: 14
    Ultimo Messaggio: 08/01/16, 00:14

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
  •