![](/img/trans.png)
[英]Excel Macro / VBA - How do I delete an entire row if a cell in one column is blank?
[英]How do I tell an excel macro to delete the entire row if cell in a specific column have data?
所以我有一个电子表格。 其中一列的单元格有数字、文本,有些是空白的。 我如何告诉宏删除列中单元格有数字的整行? 我想保留有文本或空白的行。
我知道有些人使用代码,但我不熟悉 Visual Basic。 我知道如何开始录制宏。 我知道如何分配快捷键。 我知道当宏出错时,通常是因为我忘记重命名选项卡。 我知道您可以将代码复制并粘贴到 vba 中,但我不知道如何实际操作。 我知道在哪里打开 vba,但是一旦打开,我就不知道在哪里粘贴代码。 我更愿意弄清楚如何手动执行此操作。 谢谢
Sub Macro1()
Dim N As Integer
Dim i As Integer
Dim M As Integer
Dim contents
N = Cells(Rows.Count, "A").End(xlUp).Row
M = 0
For i = 1 To N
contents = Cells(i, "A").Value
type_in_cell = VarType(contents)
If type_in_cell = 8 Or type_in_cell = 0 Then
Else
Rows(i).EntireRow.Delete
i = i - 1
End If
M = M + 1
If M = N Then Exit Sub
Next i
End Sub
如果您的最后一个单元格不为空并且您的相关列是“A”列,则这应该有效。 它检查单元格是文本还是空白,否则删除该行。
这被放入一个新模块中。 在“开发人员”选项卡中,依次转到“Visual Basic”、“插入”、“新模块”并粘贴上面的代码。 然后单击绿色播放按钮进行测试。 请注意,您无法撤消宏的操作,因此我强烈建议在编辑之前先保存文件的副本。
如果您没有可用的开发人员选项卡,请参阅以下文档:
在我处理答案时有人回答了,但无论如何我都会发布我的。
这是一个宏,它查看活动工作表 A 列中从第 1 行开始的每个单元格。如果单元格具有数值,则整行将被删除。 对于包含 A 列中的值的所有行,这将继续。根据需要调整列和第一行。
按 Alt+F11 打开 Visual Basic 编辑器 (VBE),然后按 Ctrl+R 查看项目资源管理器。 右键单击 VBAProject 并选择插入 > 模块。 如有必要,按 F7 查看代码窗格,然后将以下 VBA 代码复制并粘贴到新模块中。 按 Alt+F11 恢复活动工作表,然后按 F8 运行宏。 将工作簿另存为 *.xlsm 或 *.xlsb。
Sub DeleteNumericRows()
' delete rows that have numeric values in keyCol
Const keyCol = 1 ' adjust this: A is 1, B is 2, etc.
Const firstRow = 1 ' adjust this
msg = "Do you want to delete each row containing a " _
& "numeric value in column " & Chr(64 + keyCol) _
& "? (This cannot be Undone by using Ctrl+Z.)"
ans = MsgBox(msg, (vbQuestion + vbYesNo))
If ans <> vbYes Then Exit Sub
lastRow = Cells(Rows.Count, keyCol).End(xlUp).Row
nRow = firstRow
Do
If IsNumeric(Cells(nRow, keyCol).Value) Then
Rows(nRow).Delete
lastRow = lastRow - 1
Else
nRow = nRow + 1
End If
Loop Until nRow > lastRow
End Sub
您可能还对wellsr VBA Q&A的类似问题和答案感兴趣。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.