macros删除使用其引用的单元格的内容

我有一个要删除单元格的引用列表。 引用列表在表“test_url”中。 引用列表指向另一个表“main_lists”中要删除的单元格。

我所追求的是一个macros,它接受“test_url”表中列出的所有参考,并在“main_lists”表中select它们的单元并删除它们。

下面的macros是我为两个引用logging的,只是为了演示我需要从“test_url”表复制引用的问题,然后将其粘贴到“main_urls”表的名称框中以select指定单元格的内容然后删除其内容。 这个过程是一次手动完成一个单元格的10-20个地址/参考列表。 然而,最近这个名单是超过2000个条目,它正在增长:

Sub DeletePermittedCells() 'DeletePermittedCells Macro Sheets("test_urls").Select Range("B2").Select Sheets("test_urls").Select Selection.Copy Sheets("main_lists").Select Application.Goto Reference:="R200045C1" Application.CutCopyMode = False Selection.ClearContents Sheets("test_urls").Select Range("B3").Select Selection.Copy Sheets("main_lists").Select Application.Goto Reference:="R247138C1" Application.CutCopyMode = False Selection.ClearContents Sheets("test_urls").Select End Sub 

有人可以帮助解决这个问题吗?

试试这个:

 Sub DeletePermittedCells() Dim rng As Range Dim arr, c With Sheets("test_urls") 'storing data in array makes your code much faster arr = .Range("B2:B" & .Cells(.Rows.Count, "B").End(xlUp).Row).Value End With With Sheets("main_lists") Set rng = .Range(arr(1, 1)) For Each c In arr Set rng = Union(rng, .Range(c)) Next End With rng.ClearContents End Sub 

在数组中存储地址(而不是直接从工作表中读取每个单元格)会使代码更快

请注意,代码假定您的地址存储在范围B2:B & lastrow其中lastrow – 是列B数据的最后一个单元格的行

这假定要清除的单元格列表是A列:

 Sub ClearCells() Dim s1 As Worksheet, s2 As Worksheet Dim N As Long, I As Long, addy As String Set s1 = Sheets("test_url") Set s2 = Sheets("main_lists") N = s1.Cells(Rows.Count, "A").End(xlUp).Row For I = 1 To N addy = s1.Cells(I, 1).Value s2.Range(addy).ClearContents Next I End Sub