Excel VBA - 选择所有列和&最后占用柱后的行和行

时间:2018-04-30 19:47:18

标签: excel vba excel-vba

我试图找出标识工作表中最后一个占用列的代码,然后删除所有列。我还试图找出标识工作表中最后一个占用行的代码,然后删除所有行。

到目前为止,我已经知道我需要使用Rows.Count函数,但我无法在最后一个占用行之后选择整行。列相同...这是我到目前为止提出的,它只标识最后一个占用的行。有谁知道如何让它现在选择此后的整行?同样对于整个列?我似乎无法找出代码来选择最后一个被占用的列,就像我可以用行...提前谢谢你

行: Sheets("ppCopy").Cells(Rows.Count, 1).End(xlUp).Row

2 个答案:

答案 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