我有一个excel文件,我手动删除不按顺序排列的整个列的内容。这需要大量的手动工作,因为某些行在列中包含空白值。所以,我正在尝试编写VBA脚本来删除除第一行(标题)
之外的所选列的内容到目前为止,我一直在谷歌搜索和阅读堆栈溢出文章...这是我完成的(有些工作......)到目前为止
Sub clear_contents()
Dim currentColumn As Integer
Dim columnHeading As String
ActiveSheet.Columns("D").Delete
For currentColumn = ActiveSheet.UsedRange.Columns.Count To 1 Step -1
columnHeading = ActiveSheet.UsedRange.Cells(1, currentColumn).Value
If InStr(1, ActiveSheet.UsedRange.Cells(1, currentColumn).Value, _
"0cc17562-08c1-4f99-a234-ce6fa0cc5be4", vbBinaryCompare) = 1 Then
ActiveSheet.Columns(currentColumn).Delete
End If
Next
End Sub
此脚本正在执行的操作是删除具有指定标头值的列。 这很接近..但不是我想要做的事情
我是VBA的菜鸟,所以我在这里需要很多帮助! 先感谢您。
答案 0 :(得分:0)
由于我理解了您的请求,因此您不需要.Delete
功能,只需.ClearContents
。这个宏循环遍历每个选定的列(如果你选择整列或者只是从每个列中选择几行,并不重要),查找最后占用的行,然后清除第二行和最后一行之间的所有内容,因此第一行中的标题将是保持不变。
Sub clear_contents()
Dim Col As Integer
Dim LastRow As Long
Dim Sel As Range, rng As Range
Set Sel = Selection
For Each rng In Sel.Columns
Col = rng.Column
LastRow = Cells(Rows.Count, Col).End(xlUp).Row
If LastRow < 2 Then LastRow = 2
Range(Cells(2, Col), Cells(LastRow, Col)).ClearContents
Next
End Sub