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

Vba 如何删除包含数据的列中的最后一个单元格,vba,excel,Vba,Excel,这听起来像是一个非常基本的问题(的确如此),但我无法解决它,也无法在网络上找到合适的解决方案 如何选择包含数值的列中的最后一个单元格并将其删除 我有一些公式经过这个单元格,并在列中返回空白值。这就是目前让我感到困惑的原因。我当前的代码将一直到我将公式带到的位置,并开始删除这些单元格,而不是删除最后一个带有数值的单元格 我当前的代码如下所示 Range("AA1500").End(xlUp).Select With Selection.Delete End With 任何帮助都将不胜感激 如果我

这听起来像是一个非常基本的问题(的确如此),但我无法解决它,也无法在网络上找到合适的解决方案

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

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

我当前的代码如下所示

Range("AA1500").End(xlUp).Select
With Selection.Delete
End With
任何帮助都将不胜感激

如果我能澄清什么,请告诉我


谢谢

您可以做的是获取列(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或工作表的任何名称)中循环,并检查列A的最后一个单元格中的数值,如果发现数值,则将删除该值。

如果您想通过包含任意字符串的单元格,并 删除最后一个数值(但不是最后一个包含字母数字字符串的单元格),这应该可以:

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

它还将删除计算结果为数字的公式的最后一个单元格。它移动到它上面的列中的单元格的范围内,用它的字符来填充已清除的单元格。

你已经得到了你的帖子的答案,只是要清楚,找到最后一行的最安全的方法(根据你的帖子,在列“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
Sub FindlastRow()
最后一排一样长
对于工作表(“Sheet1”)”使用“SpecialCells()”

在“主”子部件中使用,如下所示

Sub Main()
    Dim sh As Worksheet

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

你能把这件事概括一下而不是写“第一张”吗?我想在几百张不同名称的纸上循环这个问题。这个解决方案很简单,效果最好。非常感谢。谁能解释一下我在这个问题上做错了什么?
Sub Main()
    Dim sh As Worksheet

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