如何删除包含数据的列中的最后一个单元格

时间:2017-01-28 03:55:11

标签: excel vba excel-vba

这听起来像是一个非常基本的问题(而且确实如此),但我无法弄明白,我无法在网上找到合适的解决方案。

如何选择包含数值的列中的最后一个单元格并将其删除?

我有超过此单元格的公式并在列中返回空白值。这就是目前绊倒我的原因。我当前的代码将一直向下到我携带公式的位置,并开始删除这些单元格,而不是删除带有数值的最后一个单元格。

我目前的代码如下所示

Range("AA1500").End(xlUp).Select
With Selection.Delete
End With

非常感谢任何帮助。

如果我能说清楚的话,请告诉我。

由于

4 个答案:

答案 0 :(得分:1)

如果你想要通过其中包含任意字符串的单元格 删除最后一个数字值(但不是最后一个包含字母数字字符串的单元格),这应该有效:

Sub deleteLastNum()
  Dim row As Integer
  row = Range("A1000").End(xlUp).row
  For i = row To 1 Step -1:
    If IsNumeric(Cells(i, "A")) Then
       Cells(i, "A").Clear
       Range("A" & CStr(i + 1), "A" & CStr(row)).Cut Destination:=Range("A" & CStr(i))
       Exit For
    End If
  Next
End Sub

它还将删除具有计算结果的公式的最后一个单元格。它向下移动其上方列中的单元格范围,其中包含字符以填充已清除的单元格。

答案 1 :(得分:0)

您可以做的是获取列的总行数(A)然后检查最后一个单元格值是否为数字,如果是数字则清除该单元格。

Sub del()
Dim sh As Worksheet
    Dim rn As Range
    Set sh = ThisWorkbook.Sheets("Sheet1")

    Dim k As Long
    Set rn = sh.UsedRange
    k = rn.Rows.Count + rn.Row - 1


    If IsNumeric(Sheets("Sheet1").Range("A" & k).Value) = True Then
    Sheets("Sheet1").Range("A" & k).ClearContents
    End If

End Sub

这将检查A列中最后一个单元格的数值。

希望这就是你所要求的。

修改

使用循环对工作簿中的所有工作表实现上述内容如下:

Sub del()
    Dim sh As Worksheet
    Dim rn As Range


    For Each sh In ActiveWorkbook.Worksheets

    Set sh = ThisWorkbook.Sheets(sh.Name)
    Dim k As Long
    Set rn = sh.UsedRange
    k = rn.Rows.Count + rn.Row - 1

    If IsNumeric(sh.Range("A" & k).Value) = True Then
    sh.Range("A" & k).ClearContents
    End If

    Next sh

End Sub 

这将循环遍历每张纸,如Sheet1,Sheet2或纸张的任何名称,并检查col A的最后一个单元格中的数值,如果找到数字,则它将删除该值。

答案 2 :(得分:0)

你已经得到了你的帖子的答案,只是为了清楚,找到最后一行的最安全的方法(让我们在Column" AA",根据你的帖子说),以及忽略中间的空白单元格,使用以下语法:

Sub FindlastRow()

Dim LastRow As Long

With Worksheets("Sheet1") ' <-- change "Sheet1" to your sheet's name
    LastRow = .Cells(.Rows.Count, "AA").End(xlUp).Row

    ' rest of your coding here
End With

End Sub

结果的屏幕截图:

enter image description here

答案 3 :(得分:0)

使用'SpecialCells()'

Sub ClearLastNumber(sh As WorkSheet, columnIndex As String)
    On Error GoTo ExitSub 'should 'columnIndex' column of 'sh' worksheet contain no numbers then the subsequent statement would throw an error
    With sh.Columns(columnIndex).SpecialCells(xlCellTypeConstants, xlNumbers)
        With .Areas(.Areas.Count)
             .Cells(.Count).ClearContents
        End With
    End With
ExitSub:
End Sub 

要在“主要”子目录中使用,如下所示

Sub Main()
    Dim sh As Worksheet

    For Each sh In ActiveWorkbook.Worksheets
        ClearLastNumber Sh "A"
    Next
End Sub