Condividi tramite

Excel: creare lista a partire dai valori di una cella X

Anonimo
2019-07-02T13:53:19+00:00

Ciao a tutti! Mi appello alle vostre competenze per una questione:

Vorrei ottenere una lista di valori uno sotto l'altro che sono presi da una cella X senza dover fare copia-incolla.

La cella X, a sua volta, è il risultato di una formula matematica e il suo valore cambia. 

Ho pensato, se è possibile, che dovrei avere un pulsante "aggiungi alla lista"

che mi copia il valore della cella X nella lista ogni volta che lo clicco.

Ha senso? Come posso fare?

Grazie mille,

Melissa

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2019-07-02T14:24:37+00:00

Ciao Melissa.

Vorrei ottenere una lista di valori uno sotto l'altro che sono presi da una cella X senza dover fare copia-incolla.

La cella X, a sua volta, è il risultato di una formula matematica e il suo valore cambia. 

Ho pensato, se è possibile, che dovrei avere un pulsante "aggiungi alla lista"

che mi copia il valore della cella X nella lista ogni volta che lo clicco.

Ha senso? Come posso fare?

Prova qualcosa del genere:

  • Alt+F11 per aprire l'editor di VBA
  • Alt+IM per inserire un nuovo modulo di codice
  • Nel nuovo modulo vuoto, incolla il seguente codice:

 '=========>>

Option Explicit

'--------->>

Public Sub Tester()

    Dim SH As Worksheet

    Dim destRng As Range, srcRng As Range

    Dim LRow As Long

   Const sCella_Sorgente As String = "C1"    '<<=== Modifica

   Const sColonna_Lista As String = "A"       '<<=== Modifica

    Set SH = ActiveSheet

    With SH

        Set srcRng = .Range(sCella_Sorgente)

        LRow = LastRow(SH, .Columns(sColonna_Lista))

        Set destRng = .Range(sColonna_Lista & LRow + 1)

    End With

    destRng.Value = srcRng.Value

 End Sub

'--------->>

Public Function LastRow(SH As Worksheet, _

                        Optional Rng As Range, _

                        Optional minRow As Long = 1, _

                        Optional sPassword As String)

    Dim bProtected As Boolean

    With SH

        If Rng Is Nothing Then

            Set Rng = .Cells

        End If

        bProtected = .ProtectContents = True

        If bProtected Then

            .Unprotect Password:=sPassword

        End If

    End With

    On Error Resume Next

    LastRow = Rng.Find(What:="*", _

                       after:=Rng.Cells(1), _

                       Lookat:=xlPart, _

                       LookIn:=xlFormulas, _

                       SearchOrder:=xlByRows, _

                       SearchDirection:=xlPrevious, _

                       MatchCase:=False).Row

    On Error GoTo 0

    If LastRow < minRow Then

        LastRow = minRow

    End If

    If bProtected Then

        SH.Protect Password:=sPassword, _

                   UserInterfaceOnly:=True

    End If

End Function

'<<=========  

  • Alt+Q per chiudere l'editor di VBA e tornare a Excel
  • Inserisci un pulsante o una forma sul foglio di interesse
  • Fai clic dx sul pulsante/forma
  • seleziona l'opzione Assegna Macro
  • Seleziona la macro Tester
  • OK
  • Salva il file con l’estensione xlsm

Potresti scaricare il mio file di prova Melissa20190702.xlsm

===

Regards,

Norman

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

2 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2019-07-06T12:34:10+00:00

    Ciao Melissa,

    Gentilissimo, grazie mille davvero!

    Sono riuscita a fare quello che volevo! 

    Ti ringrazio per il cortese riscontro.

    Alla prossima.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2019-07-06T12:16:23+00:00

    Gentilissimo, grazie mille davvero!

    Sono riuscita a fare quello che volevo! 

    Melissa

    La risposta è stata utile?

    0 commenti Nessun commento