Note: The other languages of the website are Google-translated. Back to English
English English

Come cancellare il contenuto della cella specificato se il valore di un'altra cella cambia in Excel?

Supponendo di voler cancellare un intervallo di contenuti di celle specificati se il valore di un'altra cella viene modificato, come puoi fare? Questo post ti mostrerà un metodo per risolvere questo problema.

Cancella il contenuto della cella specificato se il valore di un'altra cella cambia con il codice VBA


Cancella il contenuto della cella specificato se il valore di un'altra cella cambia con il codice VBA


Come mostrato nell'immagine sottostante, quando il valore nella cella A2 viene modificato, il contenuto nella cella C1: C3 verrà cancellato automaticamente. Si prega di fare quanto segue.

1. Nel foglio di lavoro cancellerai il contenuto della cella in base alle modifiche di un'altra cella, fai clic con il pulsante destro del mouse sulla scheda del foglio e seleziona Visualizza codice dal menu contestuale. Vedi screenshot:

2. In apertura Microsoft Visual Basic, Applications Edition finestra, copia e incolla sotto il codice VBA nella finestra del codice.

Codice VBA: cancella il contenuto della cella specificato se il valore di un'altra cella cambia

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2")) Is Nothing Then
        Range("C1:C3").ClearContents
    End If
End Sub

Note:: Nel codice, B2 è la cella su cui cancellerai il contenuto della cella e C1: C3 è l'intervallo da cui cancellerai i contenuti. Si prega di cambiarli come necessario.

3. premi il altro + Q i tasti per chiudere il file Microsoft Visual Basic, Applications Edition finestra.

Quindi puoi vedere i contenuti nell'intervallo C1: C3 viene cancellato automaticamente quando il valore nella cella A2 cambia come mostrato nell'immagine sottostante.


Articoli correlati:


I migliori strumenti per la produttività in ufficio

Kutools per Excel risolve la maggior parte dei tuoi problemi e aumenta la tua produttività dell'80%

  • Riutilizzo: Inserisci rapidamente formule complesse, grafici e tutto ciò che hai usato prima; Crittografa celle con password; Crea mailing list e invia email ...
  • Bar Super Formula (modifica facilmente più righe di testo e formula); Layout di lettura (leggi e modifica facilmente un gran numero di celle); Incolla su intervallo filtrato...
  • Unisci celle / righe / colonne senza perdere dati; Contenuto delle celle divise; Combina righe / colonne duplicate... Impedisci celle duplicate; Confronta intervalli...
  • Seleziona Duplica o Unico Righe; Seleziona Righe vuote (tutte le celle sono vuote); Super Find e Fuzzy Find in molte cartelle di lavoro; Selezione casuale ...
  • Copia esatta Più celle senza modificare il riferimento della formula; Riferimenti di creazione automatica a più fogli; Inserisci punti elenco, Caselle di controllo e altro ...
  • Estrai testo, Aggiungi testo, Rimuovi per posizione, Rimuovi spazio; Creare e stampare totali parziali di paging; Converti contenuto e commenti tra celle...
  • Super filtro (salva e applica schemi di filtri ad altri fogli); Ordinamento avanzato per mese / settimana / giorno, frequenza e altro; Filtro speciale in grassetto, corsivo ...
  • Combina cartelle di lavoro e fogli di lavoro; Unisci tabelle in base a colonne chiave; Suddividi i dati in più fogli; Conversione in batch xls, xlsx e PDF...
  • Più di 300 potenti funzionalità. Supporta Office / Excel 2007-2019 e 365. Supporta tutte le lingue. Facile distribuzione nella tua azienda o organizzazione. Funzionalità complete Prova gratuita di 30 giorni. Garanzia di rimborso di 60 giorni.
scheda kte 201905

Scheda Office porta l'interfaccia a schede a Office e semplifica notevolmente il lavoro

  • Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Apri e crea più documenti in nuove schede della stessa finestra, piuttosto che in nuove finestre.
  • Aumenta la produttività del 50% e riduce centinaia di clic del mouse ogni giorno!
fondo officetab
Commenti (35)
Ancora nessuna valutazione. Puoi essere il primo a votare!
Questo commento è stato fatto dal moderatore sul sito
Il codice per cancellare una cella se un'altra modifica funziona alla grande!!!! Ma ho bisogno che funzioni il contrario..... Come viene scritto quel codice??


Grazie per l'aiuto
Questo commento è stato fatto dal moderatore sul sito
Caro Scott,
Cosa intendi per lavorare al contrario? Quando si cancella manualmente il contenuto di alcune celle (C1: C3), si cancella automaticamente il contenuto della cella A2?
Questo commento è stato fatto dal moderatore sul sito
ciao, funziona solo per una cella di origine fissa (A2), come funziona dinamicamente come la sorgente è una cella variabile? ho provato a scrivere
A=activecell.row
If Not Intersect(Target, Range("A"& A)) non è niente allora
Intervallo ("C1:C3"). ClearContents
End If

questo dovrebbe fare il lavoro per quanto riguarda activecell (cioè la selezione) ma non funziona
Grazie
Questo commento è stato fatto dal moderatore sul sito
Buon Giorno,
Si prega di provare il codice VBA di seguito. Grazie per il tuo commento.

Private Sub Worksheet_Change (ByVal Target As Range)
Se (Non interseca(Target, Righe(1)) non è niente) e (Target.Count = 1) Allora
Intervallo ("C1:C3"). ClearContents
End If
End Sub
Questo commento è stato fatto dal moderatore sul sito
Ciao, sto cercando un modo per cancellare un intervallo di celle di dati quando viene inserita una "x" in una determinata cella. Ho usato la formula sopra e ha funzionato perfettamente per quella riga. Il problema è che devo estenderlo a molte righe. Ad esempio, se viene immessa una "x" in "D13", è necessario cancellare l'intervallo J:13 - v:13. Ho anche bisogno che ciò accada se viene immessa una x in "D14" poiché in ho bisogno che l'intervallo d:14 - v:14 sia cancellato. C'è un modo per scriverlo? Grazie per l'aiuto!
Questo commento è stato fatto dal moderatore sul sito
Ciao questo non funziona per il mio. Non cambia nulla ma nemmeno errori. Qualche consiglio?
Questo commento è stato fatto dal moderatore sul sito
Buona giornata,
Ci dispiace per l'inconvenienza. Forniresti la tua versione di Office? Grazie per il tuo commento.
Questo commento è stato fatto dal moderatore sul sito
Nel caso di A2, come faccio a fare riferimento a una cella da un foglio di lavoro diverso?
Questo commento è stato fatto dal moderatore sul sito
un modo per farlo senza VBA?
Questo commento è stato fatto dal moderatore sul sito
Ciao Sonia,
Non ho trovato alcuna soluzione ad eccezione di VBA. Grazie per il tuo commento.
Questo commento è stato fatto dal moderatore sul sito
Quale codice VBA devo usare se ho una tabella e ho bisogno di più spazi vuoti?

La mia tabella è B3:E7. Se il contenuto nella colonna B viene cancellato, vorrei che i dati nella colonna C, D, E fossero cancellati per quella riga. Ho quanto segue per la riga 3, ma vorrei lo stesso nella riga 4,5,6 e 7.

Private Sub Worksheet_Change (ByVal Target As Range)
If Not Intersect(Target, Range("B3")) non è niente allora
Intervallo ("C3:E3"). ClearContents
End If
End Sub
Questo commento è stato fatto dal moderatore sul sito
Che ne dici di uno per cancellare semplicemente il contenuto di qualsiasi cella con un doppio clic?
Questo commento è stato fatto dal moderatore sul sito
Ciao, come ripeti il ​​codice per più di una cella nell'esempio, ad esempio se elimino il contenuto delle celle a4 e a5, voglio cancellare rispettivamente il contenuto di b4:z4 e b5:z5, devo farlo per un foglio di calcolo di grandi dimensioni con 1000 righe qualsiasi consiglio sarà molto apprezzato
Questo commento è stato fatto dal moderatore sul sito
Ciao Julian, anch'io sto cercando lo stesso, per favore fammi sapere se hai qualche soluzione per questo.
Questo commento è stato fatto dal moderatore sul sito
Si prega di modificare i numeri di conseguenza
Dim i come intero
Private Sub Worksheet_Change (ByVal Target As Range)
Per i = 2 A 10
lookrange = "A" & i
contentrange = "B" & i & ":" & "C" & i
If Not Intersect(Target, Range(lookrange)) non è niente allora
Intervallo (intervallo di contenuti). ClearContents
End If
Avanti
End Sub
Questo commento è stato fatto dal moderatore sul sito
Ciao sagarsrinivas0312, grazie mille per questo codice. Sto già cercando una settimana per questa soluzione!
Questo commento è stato fatto dal moderatore sul sito
Questo è fantastico, grazie. Come lo faccio più volte ... così cancella altre celle in base a una colonna diversa?
Questo commento è stato fatto dal moderatore sul sito
riusciresti a scrivermelo in modo che debba solo fare copia ed incolla?
non riesco veramente a farlo funzionare

Grazie mille
Questo commento è stato fatto dal moderatore sul sito
Ciao,
sto cercando di cancellare le celle extra della colonna A e B se trovo celle vuote nella colonna C del foglio denominato "Venduto" e la macro viene eseguita dal foglio denominato "Fattura".

Ho ricevuto il codice sottostante da un sito di assistenza ma non riesco a ottenere ciò che desideravo.
per favore aiutami a riguardo. Screenshot allegato quello che voglio.

Somma Cancella()

Dim g quanto a lungo
Per g = 2 su ActiveSheet.UsedRange.Rows.Count
Se Cells(g, "C").Value = "" Allora
Celle(g, "A"). ClearContents
Celle(g, "B"). ClearContents

End If
Successiva
Somma finale
Questo commento è stato fatto dal moderatore sul sito
Questo non sembra funzionare se il contenuto della cella specificato è controllato da una cella su un altro foglio? C'è una correzione per questo?
Esempio usando i nomi delle celle
Se la cella "A2" è (=foglio1[@[a5]] e questo numero cambia sul foglio 1, quindi cambia il contenuto di A2, non cancella i contenuti nell'intervallo specificato.
Questo commento è stato fatto dal moderatore sul sito
Foglio di lavoro secondario privato_Activate()
If Range("S2") <> Range("A2").Value Then
Intervallo ("S2") = Intervallo ("A2"). Valore
Intervallo ("d2:g2"). ClearContents
End If
'S2' può essere sostituito con qualsiasi cella al di fuori dell'intervallo di dati. Quello che sta facendo il VBA è aggiornare automaticamente i dati per "S2", quindi i dati aggiornati sono ciò che controlla l'intervallo specificato e se viene cancellato o meno.
Questo è l'unico modo che ho trovato per farlo con successo quando si utilizzano celle di riferimento sia all'interno che all'esterno del foglio di lavoro.
Questo commento è stato fatto dal moderatore sul sito
Non proprio quello di cui ho bisogno ma arrivarci. Ho una cella vuota E3. Ho dati in B3. Quando inserisco i dati in E3, se è lo stesso di B3, B3 viene eliminato. Spero che tu possa aiutarmi.
Questo commento è stato fatto dal moderatore sul sito
È possibile cancellare il contenuto della cella specificato se la cella di attivazione contiene un numero specifico? Dì, SE la cella A1 = 1, quindi cancella le celle A2: A4?
Questo commento è stato fatto dal moderatore sul sito
Bonjour tout le monde,

Besoin d'aide, j'ai besoin d'effacer le contenu d'une cellule de la colonne "I" si la cellule (de la même ligne) de la colonne "O" =0, sur environ 2000 lignes avec des titres tout le 10 linee ambiente.
Questo commento è stato fatto dal moderatore sul sito
Ciao,

Sto solo cercando un modo semplice per farlo in modo che se "B2" ha selezionato "Sì" dall'elenco di convalida dei dati, la cella B3 cancellerebbe i suoi dati... e viceversa: se "B3" ha selezionato "Sì" dall'elenco elenco di convalida dei dati, la cella "B2" cancellerebbe i suoi dati.

fondamentalmente B2 or B3 poter dire ""(dall'elenco di convalida dei dati) ma mai contemporaneamente, uno dovrebbe cancellare l'altro.
Questo commento è stato fatto dal moderatore sul sito
Ciao Jeff,
Il seguente codice VBA può farti un favore. Per favore, provalo.
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220721
If Target.Cells.Count > 1 Then Exit Sub
    If (Not Intersect(Target, Range("B2")) Is Nothing) And (Target.Value = "Yes") Then
        Range("B3").ClearContents
        Else
        If (Not Intersect(Target, Range("B3")) Is Nothing) And (Target.Value = "Yes") Then
        Range("B2").ClearContents
    End If
    End If
End Sub
Questo commento è stato fatto dal moderatore sul sito
Buongiorno, avrei bisogno di cancellare una serie di caselle (un rettangolo, quindi su più righe e colonne) in base al valore di un'altra cella. es: se la cella A2 è inferiore di 12, il quadrato con vertici opposto C2 : F4 venga cancellato.
Grazie mille
Questo commento è stato fatto dal moderatore sul sito
Ciao Pietro,
Scusa non ho capito bene la tua domanda. Ti dispiace caricare uno screenshot dei tuoi dati?
Questo commento è stato fatto dal moderatore sul sito
Leggi di più, VBA non funziona. Non ho bisogno di un'altra opzione che ti consenta di farlo da un altro e da ciò che devi fare su tutte le tue cose.
La minore A2 si adatta a G2, la minore A3 a G3, la minore A6 a G6 e t.d.

Private Sub Worksheet_Change (ByVal Target As Range)
If Not Intersect(Target, Range("A2")) non è niente allora
Intervallo ("G2"). ClearContents
End If
End Sub


Данный код хорош для одной ячейки, а как его размножить на все ячейки stolбца?
Questo commento è stato fatto dal moderatore sul sito
Ciao Наталья,
Il seguente codice VBA può aiutarti a risolvere il problema. Per favore, provalo.

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20221013
    Dim xRight As Range
    Dim KeyCells As Range
    Set KeyCells = Range("A:A")
    Set xRight = Target.Offset(0, 6)
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
        xRight.ClearContents
    End If
End Sub
Questo commento è stato fatto dal moderatore sul sito
Hallo,

Al punto 3.
Die Taste "Andere" Finde ich nicht auf meiner Windows Tastatur. Ich Habe Strg, Alt, Tab... allerdings die Taste Andere gibt es auf meiner Tastatur leider nicht.

Lieben Gruß Mathias
Questo commento è stato fatto dal moderatore sul sito
Ciao Mattia,
Se non riesci a trovare il tasto corrispondente sulla tastiera. Puoi semplicemente fare clic su Risparmi nel pulsante Finestra delle applicazioni Microsoft Visual Basic per salvare il codice e quindi chiudere manualmente questa finestra.
Questo commento è stato fatto dal moderatore sul sito
Ciao,
Il codice seguente funziona come pubblicizzato ma si verificano i seguenti problemi:

In primo luogo, quando si ridimensiona la tabella di destinazione, tutti i dati della tabella vengono cancellati E, tutte le intestazioni tranne la colonna 1 vengono rietichettate in "Colonna1, Colonna2, ecc. E la cartella di lavoro si salva automaticamente e termina l'annullamento.

In secondo luogo, quando si elimina una riga di tabella, viene visualizzato un "Errore di runtime 1004 (Offset del metodo dell'intervallo di oggetti non riuscito.


Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("F3:F500")) Is Nothing Then
     Target.Offset(0, 1).ClearContents
    ElseIf Not Intersect(Target, Range("G3:G500")) Is Nothing Then
        Target.Offset(0, 1).ClearContents
        Target.Offset(0, 2).ClearContents
    ElseIf Not Intersect(Target, Range("H3:H500")) Is Nothing Then
        Target.Offset(0, 1).ClearContents
    End If
End Sub


Qualche idea di cosa potrebbe essere sbagliato?

Grazie in anticipo!
Questo commento è stato fatto dal moderatore sul sito
Hola, sto lavorando una base di dati in OFFICE ONLINE attraverso ONEDRIVE, quiero que al PONER "CANCELADO" o "NOSHOW" elimine el contenido de la fila seleccionada.
Questo commento è stato fatto dal moderatore sul sito
Ciao Angelo,
Il codice VBA non funziona in Office Online. Ci dispiace per l'inconvenienza.
Non ci sono ancora commenti pubblicati qui
Lasciate i vostri commenti
Pubblicazione come ospite
×
Valuta questo post:
0   Personaggi
Posizioni suggerite