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

如果另一個單元格的值在Excel中發生更改,如何清除指定的單元格內容?

假設如果另一個單元格的值發生更改,您要清除指定單元格內容的範圍,該怎麼辦? 這篇文章將向您展示解決此問題的方法。

如果另一個單元格的值隨VBA代碼而變化,則清除指定的單元格內容


如果另一個單元格的值隨VBA代碼而變化,則清除指定的單元格內容

如下面的屏幕截圖所示,當更改單元格A2中的值時,單元格C1:C3中的內容將自動清除。 請執行以下操作。

1.在工作表中,您將根據其他單元格更改清除單元格內容,右鍵單擊工作表選項卡,然後選擇 查看代碼 從上下文菜單中。 看截圖:

2.在開幕 Microsoft Visual Basic for Applications 窗口,將下面的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 for Applications 窗口。

然後,您可以看到當單元格A1中的值更改時,C3:C2範圍內的內容將自動清除,如下圖所示。


相關文章:


最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (37)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
如果另一個更改有效,則清除單元格的代碼效果很好!!!! 但是我需要它以相反的方式工作.....該代碼是如何編寫的?


感謝您的幫助
網站主持人對此評論進行了最小化
親愛的斯科特,
反過來工作是什麼意思? 當手動清除某些單元格(C1:C3)的內容時,自動清除單元格A2的內容?
網站主持人對此評論進行了最小化
您好,這僅適用於固定源單元(A2),如何動態地執行此操作,例如源是可變單元? 我試著寫
A=activecell.row
If Not Intersect(Target, Range("A"& A)) 什麼都不是
範圍(“C1:C3”)。清除內容
如果結束

這應該對activecell(即選擇)起作用,但不起作用
謝謝
網站主持人對此評論進行了最小化
美好的一天,
請嘗試以下 VBA 代碼。 感謝您的評論。

Private Sub Worksheet_Change(ByVal Target As Range)
If (Not Intersect(Target, Rows(1)) Is Nothing) And (Target.Count = 1) 然後
範圍(“C1:C3”)。清除內容
如果結束
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、XNUMX 和 XNUMX 行中相同。

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B3")) 什麼都不是
範圍(“C3:E3”)。清除內容
如果結束
END SUB
網站主持人對此評論進行了最小化
雙擊清除任何單元格的內容怎麼樣?
網站主持人對此評論進行了最小化
你好,你如何重複示例中多個單元格的代碼,即如果我刪除單元格a4和a5的內容,我想分別清除b4:z4和b5:z5的內容,我需要這樣做對於具有 1000 行的大型電子表格,任何建議將不勝感激
網站主持人對此評論進行了最小化
嗨,朱利安,我也在尋找相同的方法,如果您對此有任何解決方案,請告訴我。
網站主持人對此評論進行了最小化
請相應地更改數字
將 i 調暗為整數
Private Sub Worksheet_Change(ByVal Target As Range)
對於i = 2至10
查找範圍 = "A" & 我
內容範圍 = "B" & i & ":" & "C" & i
If Not Intersect(Target, Range(lookrange)) 則什麼都不是
範圍(內容範圍)。清除內容
如果結束
接下來,我
END SUB
網站主持人對此評論進行了最小化
嗨 sagarsrinivas0312,非常感謝您提供此代碼。 我已經為這個解決方案尋找了一個星期!
網站主持人對此評論進行了最小化
這太好了,謝謝。 我如何多次執行此操作...所以根據不同的列清除其他單元格?
網站主持人對此評論進行了最小化
riusciresti a scrivermelo in modo che debba solo fare copia ed incolla?
非 riesco veramente a farlo funzionare

格拉西·米勒
網站主持人對此評論進行了最小化
嗨,
如果在名為“已售”的工作表的 C 列中找到空白單元格,並且宏從名為“發票”的工作表運行,我正在嘗試清除 A 列和 B 列的額外單元格。

我從幫助站點獲得了以下代碼,但沒有得到我想要的。
請幫幫我。 截圖附上我想要的。

總和清除()

暗淡
對於 g = 2 到 ActiveSheet.UsedRange.Rows.Count
If Cells(g, "C").Value = "" Then
單元格(g,“A”).ClearContents
單元格(g,“B”).ClearContents

如果結束
下一頁
結束總和
網站主持人對此評論進行了最小化
如果指定的單元格內容由另一個工作表上的單元格控制,這似乎不起作用? 有解決辦法嗎?
使用您的單元格名稱的示例
如果單元格“A2”是 (=sheet1[@[a5]] 並且此數字在工作表 1 上更改,則更改 A2 的內容它不會清除指定範圍內的內容。
網站主持人對此評論進行了最小化
私有子 Worksheet_Activate()
如果 Range("S2") <> Range("A2").Value 那麼
範圍(“S2”)=範圍(“A2”).值
Range("d2:g2").ClearContents
如果結束
'S2' 可以替換為數據范圍之外的任何單元格。 VBA 所做的是自動更新“S2”的數據,然後更新的數據控制您指定的範圍以及它是否被清除。
這是我發現在工作表內外使用引用單元格時成功執行此操作的唯一方法。
網站主持人對此評論進行了最小化
不是我需要的,但到達那裡。我有一個空單元格 E3。我在 B3 中有數據。當我將數據放入 E3 時,如果它與 B3 相同,則 B3 被刪除。希望你能幫助我。
網站主持人對此評論進行了最小化
如果觸發單元格包含特定數字,是否可以清除指定的單元格內容? 假設,如果單元格 A1 = 1,則清除單元格 A2:A4?
網站主持人對此評論進行了最小化
大家好,

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 colone "O" =0, sur environ 2000 lignes avec des titres tout le 10 lignes 環境。
網站主持人對此評論進行了最小化
你好,

只是尋找一種簡單的方法,如果“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 Colonne) 在 base al valore di un'altra cella。 es: se la cella A2 è Superiore di 12, il quadrato con vertici opposto C2 : F4 venga cancellato。
格雷茲·米勒
網站主持人對此評論進行了最小化
嗨彼得羅,
對不起,我不太明白你的問題。 您介意上傳數據的屏幕截圖嗎?
網站主持人對此評論進行了最小化
Помогите с решением,VBA не знаю。 Мне нужно при изменении ячейки удалить данные из другой и чтобы это дейстовало на весь столбец。
Меняю А2 удаляется из G2, меняю А3 удаляется из G3, меняю A6 удаляется из G6 и т.д。

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2")) 什麼都不是
範圍(“G2”)。清除內容
如果結束
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 列標題之外的所有表頭都被重新標記為“Column1、Column2 等。並且工作簿自動保存其自身並終止撤消。

其次,在刪除任何表行時,我收到“運行時錯誤 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" o "NOSHOW" elimine el contenido de la fila seleccionada.
網站主持人對此評論進行了最小化
嗨天使,
VBA 代碼在 Office Online 中不起作用。 帶來不便敬請諒解。
這裡還沒有評論
載入更多
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護