我一直在研究一个宏来清理生成并复制到 Excel 中的表单。在我需要删除包含多余公式的行的最后阶段之前,我已经弄清楚了一切。例子:
400000 | Smith, John| 2.4 | 5.66| =C1+D1
400001 | Q, Suzy | 4.6 | 5.47| =C2+D2
400002 | Schmoe, Joe| 3.8 | 0.14| =C3+D3
Blank | | | | #VALUE
Blank | | | | #VALUE
是否有一个公式可以将“A”列与“E”列进行比较,并让它删除所有在“A”中没有值但在“E”中有值的行?
我尝试了一个基本的循环公式,仅通过空的“A”列,它可以永久删除我想要保留的信息下方的行,我在这个网站上找到了一个处理过滤器的公式(来自 brettdj)但是我不知道如何编辑它以正确捕获我需要的内容。
这是我从 brettdj 那里得到的:
Sub QuickKill()
Dim rng1 As Range, rng2 As Range, rng3 As Range
Set rng1 = Cells.Find("*", , xlValues, , xlByColumns, xlPrevious)
Set rng2 = Cells.Find("*", , xlValues, , xlByRows, xlPrevious)
Set rng3 = Range(Cells(rng2.Row, rng1.Column), Cells(1, rng1.Column))
Application.ScreenUpdating = False
Rows(1).Insert
With rng3.Offset(-1, 1).Resize(rng3.Rows.Count + 1, 1)
.FormulaR1C1 = "=OR(RC1="",RC1<>"")"
.AutoFilter Field:=2, Criteria1:="TRUE"
.EntireRow.Delete
On Error Resume Next
'in case all rows have been deleted
.EntireColumn.Delete
On Error GoTo 0
End With
Application.ScreenUpdating = True
其他一些信息:
我想忽略的工作表的前 5 行,它们包含列标题和报告名称等。
40#### 填充的行数发生了变化,所以我不能简单地让宏删除第 4 行。
我对宏(显然)没有广泛的了解,因此对某些部分如何工作的详细解释将不胜感激。提前感谢您的帮助。