删除行如果超过5个列是空的

你好,我有一个这样的Excel表格(有80000行和11列)

Name Lastname Email question-1 question-2 question-3 question-4 question-5 Sam Bob s@gmail.com abca Ally ko a@gmail.com aca John So b@gmail.com marc jo c@gmail.com abca sarah du sa@gmail.com 

所以我的问题是我如何自动删除没有答案的问题的行

类似于上面的两个答案,另一种方法是结合所提出的两种方法。

1)在excel中创build辅助函数,方法是在数据之前插入一列,并将其放在所有单元格中:= IF(COUNTBLANK(E1:L1)> = 5,TRUE,FALSE)

2)单击Excel中的“开发人员选项卡”

3)点击插入>模块

4)粘贴这个代码:

 Sub sbDelete_Rows_Based_On_Criteria() Dim lRow As Long Dim iCntr As Long lRow = 8000000 For iCntr = lRow To 1 Step -1 If Cells(iCntr, 1) = True Then Rows(iCntr).Delete End If Next End Sub 

5)将该文件保存为.xlsm

6)单击运行/子用户表单。

7)点击左上方的excel图标,所有> 5空白的行将会消失。

Mrig的答案对VBA解决scheme有好处。 如果你想用辅助列和过滤来做到这一点,试试这个:

添加一个新的列,并input这个公式到单元格I2 (或任何列在数据的末尾):

 = AND(ISBLANK(D2:H2)) 

此外,您可以将D2:H2更改为适用于您的工作表的任何内容。 在我的工作表中, DH列对应于问题1到问题5的列。

此外,这是一个数组公式,所以你必须在键盘上按下Ctrl + Shift + Enter键 ,而不是input公式后input。

编辑:另一个解决scheme没有数组公式(Mrig礼貌)是:

 = COUNTA(D2:H2)=0 

将此公式向下拖动,以获得数据扩展的多行。

看下面的例子。

在这里输入图像说明

请注意,所有“问题”列都为空白的行显示TRUE

接下来,您可以将filter应用于此数据,以便只包含辅助程序列中出现FALSE那些行。

要删除行,你必须使用VBA。 尝试以下。

 Sub Demo() Dim ws As Worksheet Dim rng As Range Dim lastRow As Long, i As Long Set ws = ThisWorkbook.Sheets("Sheet6") 'change Sheet6 to your data sheet With ws lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row For i = 2 To lastRow If WorksheetFunction.CountIf(.Range("D" & i & ":H" & i), "") = 5 Then 'check if all 5 cells are empty If rng Is Nothing Then 'add cell to range Set rng = .Range("a" & i) Else Set rng = Union(rng, .Range("a" & i)) End If End If Next i If Not rng Is Nothing Then rng.EntireRow.Delete 'delete entire row of cells in range End If End With End Sub 

如何在Excel文件中添加以上代码:

  1. 打开你的工作簿
  2. Alt + F 11 ,打开Visual Basic编辑器
  3. Insert菜单中单击Module
  4. 复制上面的代码并将其粘贴到打开的右窗格中
  5. 要运行代码,请单击代码中的任意位置,然后按F5