我试图找出标识工作表中最后一个占用列的代码,然后删除所有列。我还试图找出标识工作表中最后一个占用行的代码,然后删除所有行。
到目前为止,我已经知道我需要使用Rows.Count
函数,但我无法在最后一个占用行之后选择整行。列相同...这是我到目前为止提出的,它只标识最后一个占用的行。有谁知道如何让它现在选择此后的整行?同样对于整个列?我似乎无法找出代码来选择最后一个被占用的列,就像我可以用行...提前谢谢你
行:
Sheets("ppCopy").Cells(Rows.Count, 1).End(xlUp).Row
答案 0 :(得分:1)
您需要阅读代码并尝试理解它,答案才会出现。
分解你已经知道的事情。
Sheets("ppCopy").Cells(Rows.Count, 1).End(xlUp).Row
Rows.Count =上一个可用行
结束(xlUp)=从最后一个可用行(Rows.Count)向上移动到最后一个使用的行。
那么你如何获得专栏呢?
Sheets("ppCopy").Cells(1, Columns.Count).End(xlToLeft).Column
Columns.Count =上次可用列
结束(xlToLeft)=从最后一个可用列(Columns.Count)向左移动到最后使用的列。
以下是删除未使用的行和列的方法:
Sub deleteUnused()
Dim lastRow As Long, lastColumn As Integer 'there are a lot of rows compared to columns
Dim lastLetter As String, firstLetter As String
Set wk = ThisWorkbook
With wk.Sheets("Sheet1")
'Get last used rows and columns based on valued from Column A and Row 1
lastRow = .Cells(Excel.Rows.Count, 1).End(Excel.xlUp).Row
lastColumn = .Cells(1, Excel.Columns.Count).End(Excel.xlToLeft).Column
'Delete Rows
.Rows("" & (lastRow + 1) & ":" & Excel.Rows.Count & "").EntireRow.Delete Shift:=xlUp
'Delete columns, tricky because you need the Column Letters instead of the numbers
lastColumn = lastColumn + 1
firstLetter = Split(.Cells(, lastColumn).Address, "$")(1)
lastLetter = Split(.Cells(, Excel.Columns.Count).Address, "$")(1)
.Columns("" & firstLetter & ":" & lastLetter & "").EntireColumn.Delete Shift:=xlLeft
End With
End Sub
答案 1 :(得分:0)
J Doe 下面是一个代码,它将搜索任何列上任何单元格中的值,然后选择并删除所有行,并对列执行相同操作。没有非常技术或什么,但会做工作,并给你一些想法。它还将包含显示空单元格的公式。
希望得到这个帮助。
Sub DeleteRowAndColumns()
With ThisWorkbook.Sheets("ppCopy")
'find any cell no empty in a row in any row
.Cells.Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Offset(1, 0).EntireRow.Select
'select all the rows
.Range(Selection, Selection.End(xlDown)).Select
Selection.Delete ' clear all the rows
'find the last value in any column
.Cells.Find(What:="*", SearchOrder:=xlColumns, SearchDirection:=xlPrevious, LookIn:=xlValues).Offset(0, 1).EntireColumn.Select
'select columns
.Range(Selection, Selection.End(xlToRight)).Select
Selection.Delete 'clear columns
End With
End Sub