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

Jak wyczyścić określoną zawartość komórki, jeśli wartość innej komórki zmieni się w programie Excel?

Przypuśćmy, że chcesz wyczyścić zakres określonej zawartości komórki, jeśli wartość innej komórki zostanie zmieniona, jak możesz to zrobić? Ten post pokaże Ci metodę rozwiązania tego problemu.

Wyczyść określoną zawartość komórki, jeśli wartość innej komórki zmienia się wraz z kodem VBA


Wyczyść określoną zawartość komórki, jeśli wartość innej komórki zmienia się wraz z kodem VBA

Jak pokazano na poniższym zrzucie ekranu, po zmianie wartości w komórce A2 zawartość komórki C1: C3 zostanie automatycznie wyczyszczona. Wykonaj następujące czynności.

1. W arkuszu roboczym wyczyścisz zawartość komórki na podstawie innych zmian w komórce, kliknij prawym przyciskiem myszy kartę arkusza i wybierz Wyświetl kod z menu kontekstowego. Zobacz zrzut ekranu:

2. W otwarciu Microsoft Visual Basic for Applications okno, skopiuj i wklej poniższy kod VBA do okna Code.

Kod VBA: Wyczyść określoną zawartość komórki, jeśli zmieni się wartość innej komórki

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

Uwagi: W kodzie B2 to komórka, na podstawie której wyczyścisz zawartość komórki, a C1: C3 to zakres, z którego wyczyścisz zawartość. Zmień je według potrzeb.

3. wciśnij inny + Q klucze do zamknięcia Microsoft Visual Basic for Applications okno.

Następnie możesz zobaczyć zawartość w zakresie C1: C3 jest czyszczona automatycznie, gdy wartość w komórce A2 zmieni się, jak pokazano na poniższym zrzucie ekranu.


Podobne artykuły:


Najlepsze narzędzia biurowe

Kutools dla programu Excel rozwiązuje większość problemów i zwiększa produktywność o 80%

  • Ponowne użycie: Szybko włóż złożone wzory, wykresy i wszystko, czego używałeś wcześniej; Szyfruj komórki z hasłem; Utwórz listę mailingową i wysyłaj e-maile ...
  • Pasek Super Formula (łatwo edytować wiele wierszy tekstu i formuły); Układ do czytania (łatwe odczytywanie i edytowanie dużej liczby komórek); Wklej do filtrowanego zakresu...
  • Scal komórki / wiersze / kolumny bez utraty danych; Podziel zawartość komórek; Połącz zduplikowane wiersze / kolumny... Zapobiegaj zduplikowanym komórkom; Porównaj zakresy...
  • Wybierz Duplikat lub Unikalny Wydziwianie; Wybierz puste wiersze (wszystkie komórki są puste); Super Find i Fuzzy Find w wielu zeszytach ćwiczeń; Losowy wybór ...
  • Dokładna kopia Wiele komórek bez zmiany odwołania do formuły; Automatyczne tworzenie odniesień do wielu arkuszy; Wstaw punktory, Pola wyboru i nie tylko ...
  • Wyodrębnij tekst, Dodaj tekst, Usuń według pozycji, Usuń przestrzeń; Tworzenie i drukowanie podsumowań stronicowania; Konwertuj zawartość komórek i komentarze...
  • Super filtr (zapisz i zastosuj schematy filtrów do innych arkuszy); Zaawansowane sortowanie według miesiąca / tygodnia / dnia, częstotliwości i innych; Specjalny filtr pogrubieniem, kursywą ...
  • Połącz skoroszyty i arkusze robocze; Scal tabele na podstawie kluczowych kolumn; Podziel dane na wiele arkuszy; Konwersja wsadowa xls, xlsx i PDF...
  • Ponad 300 zaawansowanych funkcji. Obsługuje Office / Excel 2007-2021 i 365. Obsługuje wszystkie języki. Łatwe wdrażanie w przedsiębiorstwie lub organizacji. Pełne funkcje 30-dniowa bezpłatna wersja próbna. 60-dniowa gwarancja zwrotu pieniędzy.
karta kte 201905

Karta Office wprowadza interfejs z zakładkami do pakietu Office i znacznie ułatwia pracę

  • Włącz edycję i czytanie na kartach w programach Word, Excel, PowerPoint, Publisher, Access, Visio i Project.
  • Otwieraj i twórz wiele dokumentów w nowych kartach tego samego okna, a nie w nowych oknach.
  • Zwiększa produktywność o 50% i redukuje setki kliknięć myszką każdego dnia!
officetab dół
Sortuj komentarze według
Komentarze (37)
Brak ocen. Oceń jako pierwszy!
Ten komentarz został zminimalizowany przez moderatora na stronie
Kod do wyczyszczenia komórki w przypadku kolejnej zmiany działa świetnie!!!! Ale potrzebuję, żeby to działało w odwrotny sposób.... Jak jest napisany ten kod?


Dzięki za pomoc
Ten komentarz został zminimalizowany przez moderatora na stronie
Drogi Scott,
Co to znaczy pracować na odwrót? Kiedy ręcznie wyczyścisz zawartość niektórych komórek (C1:C3), to automatycznie wyczyścisz zawartość komórki A2?
Ten komentarz został zminimalizowany przez moderatora na stronie
cześć, to działa tylko dla stałej komórki źródłowej (A2), w jaki sposób to dynamicznie, takie jak źródło, jest zmienną komórką? próbowałem pisać
A=aktywnakomórka.wiersz
Jeśli nie przecina(cel, zakres("A"&A)) to nic wtedy
Zakres ("C1:C3"). Wyczyść zawartość
End If

powinno to załatwić sprawę w odniesieniu do activecell (tj. selekcji), ale nie działa
dzięki
Ten komentarz został zminimalizowany przez moderatora na stronie
Dobry dzień,
Wypróbuj poniższy kod VBA. Dziękuję za Twój komentarz.

Prywatny Sub Worksheet_Change (ByVal Target As Range)
Jeśli (Not Intersect(Target, Rows(1)) Is Nothing) i (Target.Count = 1) Wtedy
Zakres ("C1:C3"). Wyczyść zawartość
End If
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, szukam sposobu na wyczyszczenie zakresu komórek danych po wprowadzeniu „x” w określonej komórce. Użyłem powyższego wzoru i zadziałał idealnie dla tego jednego rzędu. Problem w tym, że muszę go rozciągnąć do wielu rzędów. Na przykład, jeśli "x" zostanie wprowadzone w "D13", potrzebuję wyczyszczenia zakresu J:13 - v:13. Potrzebuję również, aby tak się stało, jeśli x zostanie wprowadzony w „D14”, ponieważ potrzebuję wyczyszczenia zakresu d:14 - v:14. Czy można to napisać? Dzięki za pomoc!
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, to nie działa dla mnie. Nic się nie zmienia, ale też nie ma błędów. Jakieś wskazówki?
Ten komentarz został zminimalizowany przez moderatora na stronie
Dzień dobry,
Przepraszam za niedogodności. Czy udostępniłbyś swoją wersję pakietu Office? Dzięki za komentarz.
Ten komentarz został zminimalizowany przez moderatora na stronie
W przypadku A2 jak odwołać się do komórki z innego arkusza?
Ten komentarz został zminimalizowany przez moderatora na stronie
jakikolwiek sposób na zrobienie tego bez VBA?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Soniu,
Nie znalazłem żadnego rozwiązania poza VBA. Dzięki za komentarz.
Ten komentarz został zminimalizowany przez moderatora na stronie
Jakiego kodu VBA użyć, jeśli mam tabelę i potrzebuję wielu pustych miejsc?

Mój stół to B3:E7. Jeśli zawartość w kolumnie B zostanie wyczyszczona, chciałbym, aby dane w kolumnie C, D, E zostały wyczyszczone dla tego wiersza. Mam poniżej dla rzędu 3, ale chciałbym to samo w rzędzie 4,5,6 i 7.

Prywatny Sub Worksheet_Change (ByVal Target As Range)
Jeśli nie przecina (cel, zakres ("B3")) to nic, wtedy
Zakres ("C3:E3"). Wyczyść zawartość
End If
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
A co z jednym, aby po prostu wyczyścić zawartość dowolnej komórki za pomocą dwukrotnego kliknięcia?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, jak powtórzyć kod dla więcej niż jednej komórki w przykładzie, tzn. jeśli usunę zawartość komórek a4 i a5, chcę wyczyścić zawartość odpowiednio b4:z4 i b5:z5, muszę to zrobić w przypadku dużego arkusza kalkulacyjnego z 1000 wierszy każda porada będzie mile widziana
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Julian, ja też szukam tego samego, proszę daj mi znać, jeśli masz jakieś rozwiązanie.
Ten komentarz został zminimalizowany przez moderatora na stronie
Proszę odpowiednio zmienić liczby
Dim i jako liczba całkowita
Prywatny Sub Worksheet_Change (ByVal Target As Range)
Dla i = 2 To 10
lookrange = „A” i i
contentrange = "B" & i & ":" & "C" & i
Jeśli nie przecina (cel, zakres (zakres wyglądu)) to nic, wtedy
Zakres (zakres zawartości). Wyczyść zawartość
End If
Dalej i
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć sagarsrinivas0312,Dziękuję bardzo za ten kod. Już tydzień szukam tego rozwiązania!
Ten komentarz został zminimalizowany przez moderatora na stronie
To świetnie, dzięki. Jak mam to zrobić wiele razy... więc wyczyścić inne komórki na podstawie innej kolumny?
Ten komentarz został zminimalizowany przez moderatora na stronie
riusciresti a scrivermelo in modo che debba solo fare copia ed incolla?
non riesco veramente a farlo funziore

Dziękuję bardzo
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,
próbuję wyczyścić dodatkowe komórki w kolumnach A i B, jeśli znajdę puste komórki w kolumnie C arkusza o nazwie „Sprzedane”, a makro działa z arkusza o nazwie „Faktura”.

Dostałem poniższy kod z witryny pomocy, ale nie mogę uzyskać żądanego.
proszę o pomoc. Zrzut ekranu dołączony, co chcę.

Suma Wyczyść()

Dim g Tak długo
Dla g = 2 To ActiveSheet.UsedRange.Rows.Count
Jeśli Cells(g, "C").Value = "" Wtedy
Komórki (g, "A"). Wyczyść zawartość
Komórki (g, "B"). Wyczyść zawartość

End If
Dalej
Suma końcowa
Ten komentarz został zminimalizowany przez moderatora na stronie
Wydaje się, że to nie działa, jeśli określona zawartość komórki jest kontrolowana przez komórkę w innym arkuszu? czy jest na to rozwiązanie?
Przykład przy użyciu nazw komórek
Jeśli komórka „A2” to (=arkusz1[@[a5]] i ta liczba zmieni się na arkuszu 1, a następnie zmieni zawartość A2, nie wyczyści to zawartości w określonym zakresie.
Ten komentarz został zminimalizowany przez moderatora na stronie
Prywatny arkusz pomocniczy_Aktywuj()
Jeśli zakres("S2") <> Zakres("A2").Wartość Wtedy
Zakres("S2") = Zakres("A2").Wartość
Zakres("d2:g2"). ClearContents
End If
'S2' można zastąpić dowolną komórką spoza zakresu danych. To, co robi VBA, to automatyczne aktualizowanie danych dla „S2”, a następnie aktualizowane dane kontrolują określony zakres i czy zostaną wyczyszczone.
To jedyny sposób, w jaki udało mi się to zrobić, gdy używam komórek, do których istnieją odwołania, zarówno w arkuszu, jak i poza nim.
Ten komentarz został zminimalizowany przez moderatora na stronie
Nie do końca to, czego potrzebuję, ale dotarcie tam. Mam pustą komórkę E3. Mam dane w B3. Kiedy umieszczam dane w E3, jeśli jest to to samo co B3, to B3 jest usuwane. Mam nadzieję, że możesz mi pomóc.
Ten komentarz został zminimalizowany przez moderatora na stronie
Czy można wyczyścić określoną zawartość komórki, jeśli komórka aktywująca zawiera określoną liczbę? Powiedzmy, JEŻELI komórka A1 = 1, a następnie wyczyść komórki A2:A4?
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam wszystkich,

Besoin d'aide, j'ai besoin d'effacer le contenu d'une cellule de la colonne "I" si la cellule (de la meme ligne) de la colonne "O" =0, sur environ 2000 lignes avec des titres tout le 10 lignes środowiska.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,

Szukam tylko prostego sposobu, aby zrobić to tak, że jeśli „B2” wybrał „Tak” z listy sprawdzania poprawności danych, komórka B3 wyczyściłaby swoje dane... i na odwrót: Jeśli „B3” wybrał „Tak” z listy lista sprawdzania poprawności danych, komórka „B2” wyczyściłaby dane.

Gruntownie B2 or B3 mogę powiedzieć "Tak"(z listy walidacji danych), ale nigdy w tym samym czasie, jedno powinno wyczyścić drugie.
Ten komentarz został zminimalizowany przez moderatora na stronie
Hi Jeff,
Poniższy kod VBA może ci wyświadczyć przysługę. Proszę spróbować.
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
Ten komentarz został zminimalizowany przez moderatora na stronie
Buongiorno, avrei bisogno di cancellare una serie di caselle (un rettangolo, quindi su più righe e colonne) w bazie al valore di un'altra cella. es: se la cella A2 è inferiore di 12, il quadrato con vertici opposto C2 : F4 venga cancellato.
Dziękuję bardzo
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Pietro,
Przepraszam, nie do końca rozumiem twoje pytanie. Czy masz coś przeciwko przesłaniu zrzutu ekranu ze swoimi danymi?
Ten komentarz został zminimalizowany przez moderatora na stronie
Помогите с решением, VBA не знаю. Nie ma nowych elementów, które edytują publikacje i zbiory są dostępne we wszystkich stołach.
Меняю А2 удаляется из G2, меняю А3 удаляется из G3, меняю A6 удаляется из G6 i т.д.

Prywatny Sub Worksheet_Change (ByVal Target As Range)
Jeśli nie przecina (cel, zakres ("A2")) to nic, wtedy
Zakres ("G2"). Wyczyść zawartość
End If
End Sub


Данный код хорош для одной ячейки, а как его размножить на все ячейки столбца?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć аталья,
Poniższy kod VBA może pomóc w rozwiązaniu problemu. Proszę spróbować.

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
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam,

Punkt Zu 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
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Mathias,
Jeśli nie możesz znaleźć odpowiedniego klawisza na klawiaturze. Możesz po prostu kliknąć Zapisz przycisk w Okno aplikacji Microsoft Visual Basic aby zapisać kod, a następnie ręcznie zamknąć to okno.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,
Poniższy kod działa zgodnie z reklamą, ale występują następujące problemy:

Po pierwsze, podczas zmiany rozmiaru tabeli docelowej wszystkie dane tabeli są czyszczone ORAZ, wszystkie nagłówki oprócz kolumny 1 są ponownie etykietowane na „Kolumna1, Kolumna2 itd. ORAZ skoroszyt automatycznie zapisuje się i kończy cofnięcie.

Po drugie, podczas usuwania dowolnego wiersza tabeli otrzymuję komunikat „Błąd wykonania 1004 (przesunięcie zakresu obiektu nie powiodło się.


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


Jakiś pomysł, co może być nie tak?

Dzięki z góry!
Ten komentarz został zminimalizowany przez moderatora na stronie
Hola, estoy trabajando una base de datas en OFFICE ONLINE przechodzi przez ONEDRIVE, quiero que al PONER „ANULOWANO” lub „NOSHOW” elimine el contenido de la file seleccionada.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć aniele,
Kod VBA nie działa w Office Online. Przepraszam za niedogodności.
Nie ma tu jeszcze żadnych komentarzy
Pokaż więcej
Zostaw swój komentarz
Publikowanie jako gość
×
Oceń ten post:
0   Postacie
Sugerowane lokalizacje

Bądż na bieżąco

Prawa autorskie © 2009 - www.extendoffice.com. | Wszelkie prawa zastrzeżone. Zasilany przez ExtendOffice, | Mapa strony
Microsoft i logo Office są znakami towarowymi lub zastrzeżonymi znakami towarowymi Microsoft Corporation w Stanach Zjednoczonych i / lub innych krajach.
Chronione przez Sectigo SSL