Condividi tramite

Drop down list

Giuseppe Castellano 0 Punti di reputazione
2026-03-29T07:23:00.4566667+00:00

Salve,

mi chiedevo se fosse possibile eliminare i dati di una drop down list in automatico in funzione della cella a sinistra se ha o meno un valore.

Ho un foglio di lavoro e nella colonna "A" ho i giorni del mese che ovviamente vengono visualizzati o meno al secondo del mese in corso, quindi, se Marzo 31, se Febbraio 28/29 e cosi via.

Nella colonna "B" ho una drop box con 4 voci in elenco. Quando, per esempio passo dal mese di Gennaio (31 gg) a Febbraio (28gg) la data si aggiorna ma le ultime tre celle della drop box restano popolate e devo cancellare a mano i dati.
Sarebbe possibile una formula sulla dropbox che se "A30" è vuota cancella i dati presenti nella cella "B30" ?

Grazie e buona giornata

Giuseppe

Microsoft 365 e Office | Excel | Per il lavoro | Windows
0 commenti Nessun commento

2 risposte

Ordina per: Più utili
  1. Eleuterio Tedeschi 18,590 Punti di reputazione Moderatore volontario
    2026-03-31T07:03:26.34+00:00

    Ho un foglio di lavoro e nella colonna "A" ho i giorni del mese che ovviamente vengono visualizzati o meno al secondo del mese in corso, quindi, se Marzo 31, se Febbraio 28/29 e cosi via.
    Nella colonna "B" ho una drop box con 4 voci in elenco. Quando, per esempio passo dal mese di Gennaio (31 gg) a Febbraio (28gg) la data si aggiorna ma le ultime tre celle della drop box restano popolate e devo cancellare a mano i dati. Sarebbe possibile una formula sulla dropbox che se "A30" è vuota cancella i dati presenti nella cella "B30" ?

    Sarebbe opportuno conoscere la versione che utilizzi per capire se fattibile con le formule e, meglio, il file su cui stai lavorando per capirne la struttura e contestualizzare meglio la soluzione.
    Un modo con VBA (codice da inserire nel modulo del foglio, modificando la riga commentata):

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngCell As Range
        With ActiveSheet
            If Not Intersect(Target, .Range("A1:A31")) Is Nothing Then
                Application.EnableEvents = False
                .Range("B1:B31").Validation.Delete
                With .Range("B1:B" & .Cells(Rows.Count, 1).End(xlUp).Row).Validation
                    .Add xlValidateList, xlValidAlertStop, xlBetween, "a,b,c,d" ' <--- da modificare con le quattro voci che usi
                    .IgnoreBlank = True
                    .InCellDropdown = True
                    .ShowInput = True
                    .ShowError = True
                End With
                For Each rngCell In .Range("A1:A31")
                    If rngCell = "" Then rngCell.Offset(, 1).ClearContents
                Next rngCell
                Application.EnableEvents = True
            End If
        End With
        
    End Sub
    

    Ciao.

    La risposta è stata utile?

    0 commenti Nessun commento

  2. Tamara-Hu 14,370 Punti di reputazione Personale Esterno Microsoft Moderatore
    2026-03-29T11:33:02.0966667+00:00

    La risposta è stata tradotta automaticamente. Di conseguenza, potrebbero essere presenti errori grammaticali o termini insoliti. 


    Ciao @Giuseppe Castellano

    Grazie per aver condiviso la tua idea e per aver dedicato del tempo a spiegare in dettaglio il tuo scenario. 

    Quello che stai riscontrando è il comportamento previsto di Excel. Le formule e la Convalida dati (elenchi a discesa) sono progettate per restituire valori, ma non possono cancellare o modificare automaticamente il contenuto di un’altra cella in base a una condizione (ad esempio quando la cella a sinistra diventa vuota). Questo rientra nelle funzionalità integrate di Excel. 

    Tuttavia, il comportamento che desideri ottenere può essere realizzato utilizzando il codice VBA (macro), che consente a Excel di реагire alle modifiche di un foglio di lavoro e di cancellare i valori dell’elenco a discesa corrispondenti quando la cella della data associata diventa vuota. 

    Poiché questo forum Microsoft Q&A è focalizzato sulle funzionalità integrate e supportate. Per soluzioni VBA o di sviluppo, ti consiglio di ripubblicare la domanda su Stack Overflow, dove questi argomenti vengono trattati attivamente dalla community di sviluppatori. Al momento della pubblicazione, valuta l’uso di tag come excel‑vba, worksheet‑change o data‑validation per migliorare la visibilità. 

    (Nota: il collegamento viene condiviso dai membri della community per tua comodità. Rimanda a un sito di terze parti non gestito né verificato da Microsoft. Non possiamo garantire la qualità, la sicurezza o l’idoneità dei contenuti o del software presenti. Ti invitiamo a verificare con attenzione e a comprendere eventuali rischi prima dell’utilizzo.) 

    Per ricevere un’assistenza più accurata, sarebbe utile includere dettagli come: 

    • come vengono generati i giorni del mese nella colonna A 
    • l’intervallo in cui è applicato l’elenco a discesa 
    • un breve esempio del comportamento previsto quando si passa da un mese all’altro (ad esempio da 31 a 28 giorni) 

    Mi scuso per gli eventuali disagi. Il mio obiettivo è assicurarmi che tu riceva indicazioni corrette e utili. In questo caso, il comportamento descritto non può essere ottenuto utilizzando esclusivamente le funzionalità integrate di Excel.  

    Poiché questo forum è dedicato alle funzionalità native di Excel, il luogo più appropriato per un ulteriore supporto è una community orientata allo sviluppo come Stack Overflow, dove i contributori possono fornire esempi VBA funzionanti o suggerire soluzioni alternative. 

    Grazie per la comprensione e ti ringrazio per aver condiviso il tuo feedback. 


    Nota: Segui i passaggi indicati nella nostra documentazione per abilitare le notifiche e-mail, se desideri ricevere le notifiche relative a questa discussione.

    La risposta è stata utile?


Risposta

Le risposte possono essere contrassegnate come "Accettata" dall'autore della domanda e "Consigliata" dai moderatori, in modo da consentire agli utenti di sapere che la risposta ha risolto il problema dell'autore.