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

Cum se șterge conținutul celulei specificat dacă valoarea altei celule se modifică în Excel?

Presupunând că doriți să ștergeți o gamă de conținuturi de celule specificate dacă se schimbă valoarea altei celule, cum puteți face? Această postare vă va arăta o metodă de rezolvare a acestei probleme.

Ștergeți conținutul celulei specificat dacă valoarea altei celule se modifică cu codul VBA


Ștergeți conținutul celulei specificat dacă valoarea altei celule se modifică cu codul VBA

După cum se arată în imaginea de mai jos, când valoarea din celula A2 este modificată, conținutul din celula C1: C3 va fi șters automat. Vă rugăm să faceți următoarele.

1. În foaia de lucru veți șterge conținutul celulei pe baza modificărilor altei celule, faceți clic dreapta pe fila foaie și selectați Afișați codul din meniul contextual. Vedeți captura de ecran:

2. În deschidere Microsoft Visual Basic pentru aplicații fereastră, copiați și lipiți sub codul VBA în fereastra Cod.

Cod VBA: Ștergeți conținutul celulei specificat dacă se schimbă valoarea altei celule

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

notițe: În cod, B2 este celula pe care se va șterge conținutul celulei, iar C1: C3 este intervalul din care se va șterge conținutul. Vă rugăm să le schimbați după cum aveți nevoie.

3. apasă pe Alt + Q tastele pentru a închide Microsoft Visual Basic pentru aplicații fereastră.

Apoi, puteți vedea conținutul din intervalul C1: C3 este șters automat atunci când valoarea din celula A2 se modifică după cum se arată în imaginea de mai jos.


Legate de articole:


Cele mai bune instrumente de productivitate Office

Kutools pentru Excel vă rezolvă majoritatea problemelor și vă crește productivitatea cu 80%

  • reutilizarea: Introduceți rapid formule complexe, diagrame și orice ai folosit anterior; Criptați celulele cu parola; Creați o listă de corespondență și trimiteți e-mailuri ...
  • Super Formula Bar (editați cu ușurință mai multe linii de text și formulă); Layout de citire (citiți și editați cu ușurință un număr mare de celule); Lipiți la interval filtrat...
  • Merge celule / rânduri / coloane fără a pierde date; Conținut de celule divizate; Combinați rânduri / coloane duplicate... Prevenirea celulelor duplicate; Comparați gamele...
  • Selectați Duplicat sau Unic Rânduri; Selectați Rânduri goale (toate celulele sunt goale); Super Find și Fuzzy Find în multe cărți de lucru; Selectare aleatorie ...
  • Copie exactă Mai multe celule fără modificarea referinței formulelor; Creați automat referințe la foi multiple; Introduceți gloanțe, Casete de selectare și multe altele ...
  • Extrageți textul, Adăugați text, eliminați după poziție, Eliminați spațiul; Creați și imprimați subtotaluri de paginare; Convertiți conținutul dintre celule și comentarii...
  • Super Filtru (salvați și aplicați scheme de filtrare altor foi); Sortare avansată după lună / săptămână / zi, frecvență și multe altele; Filtru special cu bold, italic ...
  • Combinați cărți de lucru și foi de lucru; Merge Tables pe baza coloanelor cheie; Împărțiți datele în mai multe foi; Conversia în loturi xls, xlsx și PDF...
  • Peste 300 de funcții puternice. Suportă Office / Excel 2007-2021 și 365. Acceptă toate limbile. Implementare ușoară în întreprinderea sau organizația dvs. Funcții complete Probă gratuită de 30 de zile. Garanție de returnare a banilor de 60 de zile.
fila kte 201905

Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
fundul officetab
Comentarii (38)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Codul pentru a șterge o celulă dacă o altă modificare funcționează excelent!!!! Dar am nevoie să funcționeze invers..... Cum este scris acel cod?


Vă mulțumim pentru ajutor
Acest comentariu a fost redus la minimum de moderatorul de pe site
Dragă Scott,
Ce vrei să spui să lucrezi invers? Când ștergeți manual conținutul anumitor celule (C1:C3), atunci ștergeți automat conținutul celulei A2?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua, aceasta funcționează numai pentru o celulă cu sursă fixă ​​(A2), cum se face acest lucru dinamic, cum ar fi sursa o celulă variabilă? am incercat sa scriu
A=activecell.row
Dacă nu se intersectează (țintă, interval („A” și A)) nu este nimic, atunci
Interval("C1:C3").ClearContents
Final, dacă

aceasta ar trebui să facă treaba în ceea ce privește activecell (adică selecția), dar nu funcționează
Mulțumiri
Acest comentariu a fost redus la minimum de moderatorul de pe site
O zi buna,
Vă rugăm să încercați codul VBA de mai jos. Multumesc pentru comentariu.

Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Dacă (Nu se intersectează (țintă, rânduri (1)) nu este nimic) și (număr țintă = 1) atunci
Interval("C1:C3").ClearContents
Final, dacă
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, caut o modalitate de a șterge o serie de celule de date când se introduce un „x” într-o anumită celulă. Am folosit formula de mai sus și a funcționat perfect pentru acel rând. Problema este că trebuie să-l extind la mai multe rânduri. De exemplu, dacă se introduce un „x” în „D13”, am nevoie ca intervalul J:13 - v:13 să fie șters. De asemenea, trebuie să se întâmple dacă se introduce un x în „D14”, așa cum este necesar ca intervalul d:14 - v:14 să fie șters. Există vreo modalitate de a scrie asta? Multumesc pentru ajutor!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, asta nu funcționează pentru al meu. Nu se schimbă nimic, dar nici erori. Orice sfaturi?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua,
Scuze pentru neplăceri. Ați furniza versiunea dvs. Office? Multumesc pentru comentariul tau.
Acest comentariu a fost redus la minimum de moderatorul de pe site
În cazul lui A2, cum fac referire la o celulă dintr-o altă foaie de lucru?
Acest comentariu a fost redus la minimum de moderatorul de pe site
vreun mod de a face asta fără VBA?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buna Sonia,
Nu am găsit nicio soluție cu excepția VBA. Multumesc pentru comentariul tau.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ce cod VBA folosesc dacă am un tabel și am nevoie de mai multe spații libere?

Masa mea este B3:E7. Dacă conținutul din coloana B este șters, atunci aș dori să șterg datele din coloana C, D, E pentru acel rând. Am cele de mai jos pentru rândul 3, dar aș dori același lucru în rândul 4,5,6 și 7.

Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Dacă nu se intersectează (țintă, interval ("B3")) nu este nimic, atunci
Interval("C3:E3").ClearContents
Final, dacă
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ce zici de unul pentru a șterge conținutul oricărei celule printr-un dublu clic?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, cum repeți codul pentru mai mult de o celulă din exemplu, adică dacă șterg conținutul celulelor a4 și a5, vreau să șterg conținutul b4:z4 și respectiv b5:z5, trebuie să fac asta pentru o foaie de calcul mare cu 1000 de rânduri orice sfat va fi foarte apreciat
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Julian, și eu caut același lucru, vă rog să-mi spuneți dacă aveți vreo soluție pentru asta.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vă rugăm să schimbați numerele în consecință
Dim i ca întreg
Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Pentru i = 2 până la 10
gama de aspect = "A" și i
contentrange = "B" & i & ":" & "C" & i
Dacă nu se intersectează (țintă, interval (gamă de aspect)) nu este nimic, atunci
Range(contentrange).ClearContents
Final, dacă
Apoi eu
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, sagarsrinivas0312, Vă mulțumesc foarte mult pentru acest cod. Caut deja de o săptămână această soluție!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Acest lucru este grozav, mulțumesc. Cum fac asta de mai multe ori... așa că ștergeți celelalte celule pe baza unei alte coloane?
Acest comentariu a fost redus la minimum de moderatorul de pe site
riusciresti a scrivermelo in modo che debba solo fare copia ed incolla?
non risco veramente a farlo funzionare

mulțumesc mult
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,
Încerc să șterg celulele suplimentare din coloanele A și B dacă găsesc celule goale în coloana C a foii numită „Vândut” și Macro rulează din Foaia numită „Factură”.

Am primit codul de mai jos de la un site de ajutor, dar nu îmi pot obține doritul.
va rog ajutati-ma in privinta asta. Captură de ecran atașată ce vreau.

Sumă Clear()

Dim g As Long
Pentru g = 2 la ActiveSheet.UsedRange.Rows.Count
Dacă Cells(g, "C").Value = "" Atunci
Cells(g, "A").ClearContents
Celule (g, „B”).ClearContents

Final, dacă
Pagina Următoare →
Suma finală
Acest comentariu a fost redus la minimum de moderatorul de pe site
Acest lucru nu pare să funcționeze dacă conținutul celulei specificat este controlat de o celulă de pe altă foaie? există o remediere pentru asta?
Exemplu folosind numele celulelor tale
Dacă celula „A2” este (=sheet1[@[a5]] și acest număr se modifică pe foaia 1, atunci modifică conținutul A2, nu șterge conținutul din intervalul specificat.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Private Sub Worksheet_Activate()
Dacă Interval(„S2”) <> Interval(„A2”).Valoare Atunci
Interval("S2") = Interval ("A2").Valoare
Range("d2:g2").ClearContents
Final, dacă
„S2” poate fi înlocuit cu orice celulă din afara intervalului de date. Ceea ce face VBA este să actualizeze automat datele pentru „S2”, apoi datele care sunt actualizate sunt ceea ce controlează intervalul pe care l-ați specificat și dacă este sau nu șters.
Acesta este singurul mod pe care l-am găsit de a face acest lucru cu succes atunci când folosesc celule la care se face referire atât în ​​interiorul, cât și în afara foii de lucru.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Nu chiar ceea ce am nevoie, dar ajung acolo. Am o celulă goală E3. Am date în B3. Când am pus date în E3, dacă sunt la fel ca B3, atunci B3 este șters. Sper că mă poți ajuta.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Este posibil să ștergeți conținutul celulei specificate dacă celula de declanșare conține un anumit număr? Să spunem, DACĂ celula A1 = 1, atunci ștergeți celulele A2:A4?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua tuturor,

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 linii environ.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buna,

Caut doar o modalitate ușoară de a face astfel încât, dacă „B2” a selectat „Da” din lista de validare a datelor, celula B3 ar șterge datele sale... și invers: dacă „B3” a selectat „Da” din lista de validare a datelor, celula „B2” ar șterge datele sale.

Pe scurt B2 or B3 pot spune "Da"(din lista de validare a datelor) dar niciodată în același timp, unul ar trebui să îl curețe pe celălalt.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Hi Jeff,
Următorul cod VBA vă poate face o favoare. Vă rugăm să încercați.
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
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buongiorno, avrei nevoie de 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 è inferior di 12, il quadrato con vertici opposto C2 : F4 venga cancellato.
mulțumesc mult
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut Pietro,
Scuze, nu prea am inteles intrebarea ta. Te superi să încarci o captură de ecran a datelor tale?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Помогите с решением, VBA не знаю. Мне нужно при изменении ячейки удалить данные из другой и чтобы это дейстовало на стовало на веслб.
Меняю А2 удаляется из G2, меняю А3 удаляется из G3, меняю A6 удаляется из G6 и т.д.

Subsol de lucrări private_Change (țintă ByVal ca rază de acțiune)
Dacă nu se intersectează (țintă, interval ("A2")) nu este nimic, atunci
Range("G2").ClearContents
Final, dacă
End Sub


Данный код хорош для одной ячейки, а как его размножить на все ячейки столбца?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Наталья,
Următorul cod VBA vă poate ajuta să rezolvați problema. Vă rugăm să încercați.

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
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua,

Zu Punkt 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
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut Mathias,
Dacă nu găsiți tasta corespunzătoare pe tastatură. Puteți doar să faceți clic pe Economisiți buton în Fereastra Aplicații Microsoft Visual Basic pentru a salva codul și apoi închideți manual această fereastră.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buna,
Codul de mai jos funcționează așa cum este anunțat, dar apar următoarele probleme:

În primul rând, la redimensionarea tabelului vizat, toate datele din tabel sunt șterse ȘI, toate anteturile coloanei 1, cu excepția coloanei 1, sunt re-etichetate la „Column2, ColumnXNUMX etc. ȘI registrul de lucru se salvează automat și oprește anularea.

În al doilea rând, la ștergerea oricărui rând de tabel, primesc o „Eroare de rulare 1004 (Metoda de compensare a intervalului de obiecte a eșuat.


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


Aveți idee despre ce ar putea fi în neregulă?

Multumesc in avans!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Hola, estoy lucrând într-o bază de date în OFFICE ONLINE prin ONEDRIVE, care așteaptă să PONER „CANCELADO” sau „NOSHOW” elimină conținutul filei selectate.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Hei, ingeras,
Codul VBA nu funcționează în Office Online. Îmi pare rău pentru neplăcerile create.
Nu există comentarii postate aici încă
Încărcați mai

Urmărește-ne

Copyright © 2009 - www.extendoffice.com. | Toate drepturile rezervate. Cu sprijinul ExtendOffice. | Harta site-ului
Microsoft și sigla Office sunt mărci comerciale sau mărci comerciale înregistrate ale Microsoft Corporation în Statele Unite și / sau în alte țări.
Protejat de Sectigo SSL