【发布时间】:2012-12-27 11:52:32
【问题描述】:
我有一个从 A1 到 T1 的一千行和 20 列的 Excel Sheet1。该范围内的每个单元格中都有一些数据,通常是一两个单词。 在 Sheet2,A1 列中,我有一个包含 1000 个值的数据列表。
我正在编写 VBA 脚本以从 Sheet1 中的 Sheet2 列表中查找单词并清除找到的单元格的值。
我现在有一个 VBA 脚本,它只适用于 Sheet1 的 A1 列,它只删除行。这是脚本:
Sub DeleteEmails()
Dim rList As Range
Dim rCrit As Range
With Worksheets("Sheet1")
.Range("A1").Insert shift:=xlDown: .Range("A1").Value = "Temp Header"
Set rList = .Range("A1", .Cells(Rows.Count, 1).End(xlUp))
End With
With Worksheets("Sheet2")
.Range("A1").Insert shift:=xlDown: .Range("A1").Value = "Temp Header"
Set rCrit = .Range("A1", .Cells(Rows.Count, 1).End(xlUp))
End With
rList.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=rCrit, Unique:=False
rList.Offset(1).SpecialCells(xlCellTypeVisible).Delete shift:=xlUp
Worksheets("Sheet1").ShowAllData
rList(1).Delete shift:=xlUp: rCrit(1).Delete shift:=xlUp
Set rList = Nothing: Set rCrit = Nothing
End Sub
谁能帮帮我?我需要清除值,而不是删除行,这应该适用于 Sheet1 的所有列,而不仅仅是 A1。
【问题讨论】:
-
@CamSpy 基于该值,您是要清除该单元格还是删除整行还是只删除该单元格?
-
@bonCodigo 我想清除单元格,以保留其他列/行的顺序
-
@SiddharthRout 与他所做的一样,AdvancedFilter 正是适合这项工作的工具。当 find 甚至不是这里的问题时,我不明白人们如何投票。
-
@Maverik:不是循环每一列,而是循环 Sheet2 中列中的单元格,并使用
.Find查找 Sheet1 中的值,然后使用.ClearContents如果找到该单词,所以我不知道你不明白哪一部分:)