这听起来像是一个非常基本的问题(而且确实如此),但我无法弄明白,我无法在网上找到合适的解决方案。
如何选择包含数值的列中的最后一个单元格并将其删除?
我有超过此单元格的公式并在列中返回空白值。这就是目前绊倒我的原因。我当前的代码将一直向下到我携带公式的位置,并开始删除这些单元格,而不是删除带有数值的最后一个单元格。
我目前的代码如下所示
Range("AA1500").End(xlUp).Select
With Selection.Delete
End With
非常感谢任何帮助。
如果我能说清楚的话,请告诉我。
由于
答案 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
结果的屏幕截图:
答案 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