gpt4 book ai didi

excel - 使用引用删除单元格内容的宏

转载 作者:行者123 更新时间:2023-12-04 22:05:49 25 4
gpt4 key购买 nike

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

我所追求的是一个宏,它获取“test_url”表中列出的所有引用,并在“main_lists”表中选择它们的单元格并删除它们。

下面的宏是我为两个引用记录的,只是为了证明我的问题需要我从“test_url”表中复制引用,然后将其粘贴到“main_urls”表的 NameBox 中以选择指定单元格的内容然后删除其内容。这个过程是手动完成的,每次一个单元格,以获得 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 中具有数据的最后一个单元格的行

关于excel - 使用引用删除单元格内容的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22269998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com