如果某一列或多列中缺少数据,是否会删除 Excel 中的整行?

如果某一列或多列中缺少数据,是否会删除 Excel 中的整行?

我刚刚从 Google 通讯录下载了一个 Micosoft CSV 文件,我想修改它以便整理手机中的联系人。为了简化我的生活,我将回到我的“傻瓜”手机,而“傻瓜”手机没有足够的空间来存放文件中的所有联系人。

话虽如此,我认为 Google 很愚蠢,因为它列出了我在 Gmail 帐户使用期间发过电子邮件的几乎所有人,以及我从未发过电子邮件的人(我想这些来自我的电子邮件列表)。因此,最终结果是我拥有大量联系人,但其中大多数人我几乎都不认识,我也没有他们的电话号码。我不会用手机发送电子邮件(显然我也不会用翻盖手机发送电子邮件),所以我不需要它们。

所以我将 CSV 文件导入了 Excel。基本上,我想要做的是,如果该行中我关注的列中没有数据,则删除整行

R,S,T,U,V,W,AL,AM,AN,AO,AP,BG,BH,BR,BS,BU,BV

因此,让我稍微简化一下问题。假设名字、中间名和姓氏分别位于AB和列C中。然后手机号码位于 列中D,家庭电话号码位于 列中E,电子邮件位于 列中。对于列表中的每个联系人,如果其在或F列或 两者中没有数据,我想删除其行,但如果其在 列中有数据,我则不在乎。DEF

我编写了以下宏,但它似乎删除了我的整个电子表格,这是不应该的。我对 Excel 宏和 VBA 还很陌生,这是我第一次用它们做任何事情,所以我很感激有人能给我一些帮助。

Sub deleteBlankRows()
On Error Resume Next
Columns("R:R").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("S:S").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("T:T").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("U:U").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("V:V").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("W:W").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("AL:AL").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("AM:AM").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("AN:AN").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("AO:AO").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("AP:AP").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("BG:BG").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("BH:BH").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("BR:BR").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("BS:BS").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("BU:BU").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("BV:BV").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

答案1

我认为你的想法很好,但 VBA 并不想这样工作。我会尝试用这样的循环 -

Sub deleterows()

Dim intcount As Integer
Dim introw As Integer

intcount = ActiveSheet.UsedRange.Rows.Count

For introw = intcount To 1 Step -1
    If Range("B" & introw) = "" Or Range("C" & introw) = "" Then
    Range("B" & introw).EntireRow.Delete
    End If

Next

End Sub

if条件下,只需定义您想要检查的任何列,并以Range("X" & introw) = ""分隔Or

相关内容