Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    231

    [excel] Copiare valore solo su condizione

    Salve a tutti..
    Sto cercando un suggerimento, un idea, su come realizzare questa cosa:
    Ho un file excel nel quale vi è una lunga lista di nomi con ciascuno un valore intero accanto. Cioè ad esempio:

    Luigi - 6
    Marco - 5
    Andrea - 9

    Vorrei fare in modo di copiare su altri fogli excel tutti i nomi con uno specifico valore. Ad esempio: foglio1 contiene tutti i nomi con valore 1, foglio2 con valore 2, etc.

    E' possibile farlo con excel senza utilizzare altri linguaggi? Quali funzioni devo usare?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Devi ricorrere a una macro. Il range di questi valori è molto ampio? Quanti fogli conti di dover creare?

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    231
    Il range è 1-10. Per quanto riguarda i fogli ne basta anche uno solo, con i valori disposti su 10 colonne diverse

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    231
    Tu dici che riesco a fare tutto questo con una macro?
    Con una condizione SE ho creato una colonna in cui il nome è copiato solo se il valore coincide. Solo che rimangono tantissime righe vuote. Come faccio a copiarle in un altro foglio eliminando le righe vuote?

  5. #5
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,995
    se puoi avere il valore in una cella separata allora basta fare un ordinamento

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Supponiamo che tu abbia i nominativi nel range a2:a22 e i valori, compresi tra 1 e 10, nel range b2:b22 e che voglia incolonnarli a partire da c (che conterrà i nominativi che hanno valore pari a 1) fino alla colonna l che conterrà i nominativi che hanno valore pari a 10.

    Il codice è molto semplice

    codice:
    Option Base 1
    Option Explicit
    
    Sub trasla()
    Dim colonna As Variant
    Dim cella As Range
    Dim ultimariga As Long
    colonna = Array("c", "d", "e", "f", "g", "h", "i", "j", "k", "l")
    For Each cella In Range("b2:b22")
        ultimariga = Range(colonna(cella) & "65536").End(xlUp).Row
        Range(colonna(cella) & ultimariga + 1) = cella.Offset(0, -1)
    Next cella
    End Sub
    Modifica solo il range.

  7. #7
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,995
    non ho capito la riga
    ultimariga = Range(colonna(cella) & "65536").End(xlUp).Row
    me la puoi spiegare ?

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da patel
    non ho capito la riga
    ultimariga = Range(colonna(cella) & "65536").End(xlUp).Row
    me la puoi spiegare ?
    In pratica ho definito il mio array con le colonne in cui andrò a copiare i dati dandogli base 1.
    All'interno del ciclo verifico i valori numerici. Se per esempio il valore è 2

    colonna(2) sarà d quindi verifico qual'è l'ultima riga della colonna D che contiene già dei dati e tramite l'istruzione successiva

    Range(colonna(cella) & ultimariga + 1) = cella.Offset(0, -1)

    assegno alla cella della stessa colonna, incrementata di un'unità/riga, il valore della stessa riga presente nella colonna adiacente alla sinistra (cioè il nominativo presente nella colonna A) tramite l'offset.
    Spero di essere stato sufficientemente chiaro.

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    231
    Grazie nicola, l'ho provato e funziona che è una meraviglia...

  10. #10
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,995
    Originariamente inviato da nicola75ss Se per esempio il valore è 2
    colonna(2) sarà d quindi verifico qual'è l'ultima riga della colonna D che contiene già dei dati
    è proprio questo che non capisco, non comprendo i significati di
    & "65536"
    .End(xlUp)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.