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

Как очистить указанное содержимое ячейки при изменении значения другой ячейки в Excel?

Предположим, вы хотите очистить диапазон указанного содержимого ячейки, если значение другой ячейки изменилось, как вы можете это сделать? Этот пост покажет вам способ решения этой проблемы.

Очистить указанное содержимое ячейки, если значение другой ячейки изменяется с кодом VBA


Очистить указанное содержимое ячейки, если значение другой ячейки изменяется с кодом VBA

Как показано ниже, при изменении значения в ячейке A2 содержимое ячейки C1: C3 будет очищено автоматически. Пожалуйста, сделайте следующее.

1. На рабочем листе вы очистите содержимое ячейки на основе изменений другой ячейки, щелкните правой кнопкой мыши вкладку листа и выберите Просмотреть код из контекстного меню. Смотрите скриншот:

2. В дебюте Microsoft Visual Basic для приложений окна, скопируйте и вставьте под кодом VBA в окно кода.

Код VBA: очистить указанное содержимое ячейки при изменении значения другой ячейки

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

Внимание: В коде B2 - это ячейка, на основе которой вы очищаете содержимое ячейки, а C1: C3 - это диапазон, из которого вы очищаете содержимое. Пожалуйста, измените их по своему усмотрению.

3. нажмите другой + Q ключи, чтобы закрыть Microsoft Visual Basic для приложений окно.

Затем вы можете увидеть содержимое диапазона C1: C3 очищается автоматически при изменении значения в ячейке A2, как показано ниже.


Статьи по теме:


Лучшие инструменты для работы в офисе

Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма ...
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон...
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы... Предотвращение дублирования ячеек; Сравнить диапазоны...
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор ...
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое ...
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии...
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом ...
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF...
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
вкладка kte 201905

Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (37)
Оценок пока нет. Оцените первым!
Этот комментарий был сведен к минимуму модератором на сайте
Код для очистки ячейки, если другие изменения работают отлично!!!! Но мне нужно, чтобы это работало наоборот..... Как написан этот код??


Спасибо за вашу помощь
Этот комментарий был сведен к минимуму модератором на сайте
Дорогой Скотт,
Что значит работать наоборот? Когда вручную очистить содержимое определенных ячеек (C1: C3), то автоматически очистить содержимое ячейки A2?
Этот комментарий был сведен к минимуму модератором на сайте
привет, это работает только для фиксированной исходной ячейки (A2), как это сделать динамически, например, исходная ячейка является переменной? я пытался написать
A=activecell.строка
Если Не Пересечь(Цель, Диапазон("A"& A)) Ничего, Тогда
Диапазон("C1:C3").ClearContents
End If

это должно работать в отношении активной ячейки (т.е. выбора), но не работает
благодаря
Этот комментарий был сведен к минимуму модератором на сайте
Добрый день,
Пожалуйста, попробуйте приведенный ниже код VBA. Спасибо за ваш комментарий.

Private Sub Worksheet_Change (ByVal Target As Range)
Если (Not Intersect(Target, Rows(1)) is Nothing) And (Target.Count = 1) Then
Диапазон("C1:C3").ClearContents
End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Привет, я ищу способ очистить диапазон ячеек данных, когда в определенную ячейку вводится «x». Я использовал приведенную выше формулу, и она отлично сработала для этой строки. Проблема в том, что мне нужно расширить его до многих строк. Например, если в "D13" введено "x", мне нужно очистить диапазон J:13 - v:13. Мне также нужно, чтобы это произошло, если в «D14» введен x, так как мне нужно очистить диапазон d: 14 - v: 14. Есть ли способ написать это? Спасибо за вашу помощь!
Этот комментарий был сведен к минимуму модератором на сайте
Привет, это не работает для меня. Ничего не меняется, но и ошибок нет. Какие-нибудь советы?
Этот комментарий был сведен к минимуму модератором на сайте
Добрый день,
Приносим извинения за доставленные неудобства. Не могли бы вы предоставить свою версию Office? Спасибо за ваш комментарий.
Этот комментарий был сведен к минимуму модератором на сайте
В случае A2, как я могу сослаться на ячейку из другого листа?
Этот комментарий был сведен к минимуму модератором на сайте
любой способ сделать это без VBA?
Этот комментарий был сведен к минимуму модератором на сайте
Привет Соня,
Не нашел никакого решения, кроме VBA. Спасибо за ваш комментарий.
Этот комментарий был сведен к минимуму модератором на сайте
Какой код VBA мне использовать, если у меня есть таблица и мне нужно несколько пробелов?

Моя таблица B3:E7. Если содержимое в столбце B очищено, я хотел бы очистить данные в столбцах C, D, E для этой строки. У меня есть ниже для строки 3, но я хотел бы то же самое в строке 4,5,6 и 7.

Private Sub Worksheet_Change (ByVal Target As Range)
Если Не Пересечение(Цель, Диапазон("B3")) Ничего, Тогда
Диапазон("C3:E3").ClearContents
End If
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Как насчет того, чтобы просто очистить содержимое любой ячейки двойным щелчком мыши?
Этот комментарий был сведен к минимуму модератором на сайте
Привет, как повторить код для более чем одной ячейки в примере, т.е. если я удалю содержимое ячеек a4 и a5, я хочу очистить содержимое b4: z4 и b5: z5 соответственно, мне нужно сделать это для большой таблицы с 1000 строками любые советы будут высоко оценены
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Джулиан, я тоже ищу то же самое, пожалуйста, дайте мне знать, если у вас есть какое-либо решение для этого.
Этот комментарий был сведен к минимуму модератором на сайте
Пожалуйста, измените номера соответственно
Dim i как целое число
Private Sub Worksheet_Change (ByVal Target As Range)
Для I = 2 Чтобы 10
lookrange = "A" & я
диапазон содержимого = "B" & i & ":" & "C" & i
Если Не Пересечение(Цель, Диапазон(диапазон поиска)) - Ничто, Тогда
Диапазон (диапазон содержимого). ClearContents
End If
Затем я
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Привет, sagarsrinivas0312! Большое спасибо за этот код. Я уже неделю ищу это решение!
Этот комментарий был сведен к минимуму модератором на сайте
Это здорово, спасибо. Как я делаю это несколько раз... поэтому очищаю другие ячейки на основе другого столбца?
Этот комментарий был сведен к минимуму модератором на сайте
riusciresti a scrivermelo in modo che debba solo fare copy ed incolla?
non riesco veramente a farlo funzionare

Большое спасибо
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,
Я пытаюсь очистить лишние ячейки столбцов A и B, если нахожу пустые ячейки в столбце C листа с именем «Продано», а макрос запускается из листа с именем «Счет».

Я получил код ниже с сайта помощи, но не смог получить желаемое.
Пожалуйста, помогите мне в этом. Скриншот прилагается, что я хочу.

Сумма Очистить()

Dim g As Long
Для g = 2 в ActiveSheet.UsedRange.Rows.Count
Если Ячейки(g, "C").Value = "" Тогда
Ячейки(g, "A").ClearContents
Ячейки(g, "B").ClearContents

End If
Далее
Конечная сумма
Этот комментарий был сведен к минимуму модератором на сайте
Это не работает, если указанное содержимое ячейки контролируется ячейкой на другом листе? Это можно как-то исправить?
Пример использования имен ваших ячеек
Если ячейка «A2» равна (=sheet1[@[a5]] и это число изменяется на листе 1, то изменяется содержимое A2, содержимое в указанном диапазоне не очищается.
Этот комментарий был сведен к минимуму модератором на сайте
Частная подпрограмма Worksheet_Activate()
Если Диапазон("S2") <> Диапазон("A2").Значение Тогда
Диапазон ("S2") = Диапазон ("A2"). Значение
Диапазон("d2:g2").ClearContents
End If
«S2» можно заменить любой ячейкой за пределами диапазона данных. Что делает VBA, так это автоматически обновляет данные для «S2», тогда обновляемые данные — это то, что контролирует указанный вами диапазон и очищается ли он.
Это единственный способ, которым я нашел, чтобы успешно сделать это при использовании ссылочных ячеек как на листе, так и за его пределами.
Этот комментарий был сведен к минимуму модератором на сайте
Не совсем то, что мне нужно, но добраться туда. У меня есть пустая ячейка E3. У меня есть данные в B3. Когда я помещаю данные в E3, если они такие же, как B3, тогда B3 удаляется. Надеюсь, вы можете мне помочь.
Этот комментарий был сведен к минимуму модератором на сайте
Можно ли очистить указанное содержимое ячейки, если ячейка триггера содержит определенное число? Скажем, ЕСЛИ ячейка A1 = 1, затем очистить ячейки A2: A4?
Этот комментарий был сведен к минимуму модератором на сайте
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 lignes environ.
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,

Просто ищу простой способ сделать так, чтобы, если «B2» выбрал «Да» из списка проверки данных, ячейка B3 очистила бы свои данные... и наоборот: если «B3» выбрал «Да» из списка проверки данных. список проверки данных, ячейка «B2» очистит свои данные.

в основном B2 or B3 можно сказать "Да"(из списка проверки данных), но никогда одновременно, одно должно очистить другое.
Этот комментарий был сведен к минимуму модератором на сайте
Привет Джефф,
Следующий код VBA может оказать вам услугу. Пожалуйста, попробуйте.
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
Этот комментарий был сведен к минимуму модератором на сайте
Buongiorno, avrei bisogno di cancellare una serie di caselle (un rettangolo, quindi su più righe e columnne) в базе al valore di un'altracella. es: se lacella A2 è inferiore di 12, il quadrato convertici opposto C2: F4 venga Cancellato.
Большое спасибо
Этот комментарий был сведен к минимуму модератором на сайте
Привет Пьетро,
Извините, я не совсем понимаю ваш вопрос. Не могли бы вы загрузить скриншот ваших данных?
Этот комментарий был сведен к минимуму модератором на сайте
Помогите с исходом, VBA не знаю. Мне необходимо при необходимости удалить данные из другого и чтобы это дейстовало на весь столбец.
Меняю А2 реакцию на G2, меняю А3 реакцию на G3, меняю А6 реакцию на G6 и т.д.

Private Sub Worksheet_Change (ByVal Target As Range)
Если Не Пересечение(Цель, Диапазон("A2")) Ничего, Тогда
Диапазон("G2").ClearContents
End If
End Sub


Данный код хорош для одной ячейки, а как его размножить на все ячейки столбца?
Этот комментарий был сведен к минимуму модератором на сайте
Привет Наталья,
Следующий код VBA может помочь вам решить проблему. Пожалуйста, попробуйте.

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
Этот комментарий был сведен к минимуму модератором на сайте
Алло,

К пункту 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.

Либен Грус Матиас
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Матиас,
Если вы не можете найти соответствующую клавишу на клавиатуре. Вы можете просто нажать на Сохраните в Окно приложений Microsoft Visual Basic чтобы сохранить код, а затем вручную закрыть это окно.
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,
Приведенный ниже код работает, как рекламируется, но возникают следующие проблемы:

Во-первых, при изменении размера целевой таблицы все данные таблицы очищаются, И все заголовки, кроме столбца 1, переименовываются в «Столбец1, Столбец2 и т. д. И рабочая книга автоматически сохраняет себя и убивает отмену.

Во-вторых, при удалении любой строки таблицы я получаю «Ошибка времени выполнения 1004 (сбой метода смещения диапазона объекта.


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


Есть идеи, что может быть не так?

Заранее спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
Hola, estoy trabajando una base de datos en OFFICE ONLINE a traves de ONEDRIVE, quiero que al PONER "CANCELADO" или "NOSHOW" elimine el contenido de la fila seleccionada.
Этот комментарий был сведен к минимуму модератором на сайте
Привет, ангел,
Код VBA не работает в Office Online. Извините за беспокойство.
Здесь еще нет комментариев
Загрузить ещё
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

Подписывайтесь на Нас

Copyright © 2009 - www.extendoffice.ком. | Все права защищены. Питаться от ExtendOffice, | Карта сайта
Microsoft и логотип Office являются товарными знаками или зарегистрированными товарными знаками Microsoft Corporation в США и / или других странах.
Защищено Sectigo SSL