删除行如果超过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
更改为适用于您的工作表的任何内容。 在我的工作表中, D
到H
列对应于问题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文件中添加以上代码:
- 打开你的工作簿
- 按Alt + F 11 ,打开Visual Basic编辑器
- 在
Insert
菜单中单击Module
- 复制上面的代码并将其粘贴到打开的右窗格中
- 要运行代码,请单击代码中的任意位置,然后按F5键