Excel 如何删除“列”中有数字的行;“A”吗;?
在列“A”中,我试图删除以数字开头的行。例如,在我发布的图像中,我希望我的宏删除第3行和第11行Excel 如何删除“列”中有数字的行;“A”吗;?,excel,vba,for-loop,numeric,delete-row,Excel,Vba,For Loop,Numeric,Delete Row,在列“A”中,我试图删除以数字开头的行。例如,在我发布的图像中,我希望我的宏删除第3行和第11行 从缓慢工作的东西开始,就是这个: Sub RemoveNumbersFromColumnA() Dim i As Long Dim wks As Worksheet Set wks = Worksheets(1) For i = 10 To 1 Step -1 If IsNumeric(Left(wks.Cells(i, "A"), 1)) Th
从缓慢工作的东西开始,就是这个:
Sub RemoveNumbersFromColumnA()
Dim i As Long
Dim wks As Worksheet
Set wks = Worksheets(1)
For i = 10 To 1 Step -1
If IsNumeric(Left(wks.Cells(i, "A"), 1)) Then
Debug.Print wks.Cells(i, "A"); " deleting..."
wks.Cells(i, "A").Delete
End If
Next i
End Sub
Sub RemoveNumbersFromColumnA()
Dim i As Long
Dim myCell As Range
Dim rowsToDelete As Range
For i = 1 To 10
Set myCell = Worksheets(1).Cells(i, "A")
If IsNumeric(Left(myCell, 1)) Then
Debug.Print myCell; " adding..."
If rowsToDelete Is Nothing Then
Set rowsToDelete = myCell.EntireRow
Else
Set rowsToDelete = Union(rowsToDelete, myCell.EntireRow)
End If
End If
Next i
If Not rowsToDelete Is Nothing Then
rowsToDelete.Delete
End If
End Sub
其思想是向后循环并检查单元格内容的最左边部分是否为数字。如果是数字,则在即时窗口中打印信息并将其删除。这就是您所得到的结果,按F8键,例如逐步:
然后,您可以继续,将要删除的行保存到单个区域,并在末尾仅删除此区域一次。像这个:
Sub RemoveNumbersFromColumnA()
Dim i As Long
Dim wks As Worksheet
Set wks = Worksheets(1)
For i = 10 To 1 Step -1
If IsNumeric(Left(wks.Cells(i, "A"), 1)) Then
Debug.Print wks.Cells(i, "A"); " deleting..."
wks.Cells(i, "A").Delete
End If
Next i
End Sub
Sub RemoveNumbersFromColumnA()
Dim i As Long
Dim myCell As Range
Dim rowsToDelete As Range
For i = 1 To 10
Set myCell = Worksheets(1).Cells(i, "A")
If IsNumeric(Left(myCell, 1)) Then
Debug.Print myCell; " adding..."
If rowsToDelete Is Nothing Then
Set rowsToDelete = myCell.EntireRow
Else
Set rowsToDelete = Union(rowsToDelete, myCell.EntireRow)
End If
End If
Next i
If Not rowsToDelete Is Nothing Then
rowsToDelete.Delete
End If
End Sub
从缓慢工作的东西开始,就是这个:
Sub RemoveNumbersFromColumnA()
Dim i As Long
Dim wks As Worksheet
Set wks = Worksheets(1)
For i = 10 To 1 Step -1
If IsNumeric(Left(wks.Cells(i, "A"), 1)) Then
Debug.Print wks.Cells(i, "A"); " deleting..."
wks.Cells(i, "A").Delete
End If
Next i
End Sub
Sub RemoveNumbersFromColumnA()
Dim i As Long
Dim myCell As Range
Dim rowsToDelete As Range
For i = 1 To 10
Set myCell = Worksheets(1).Cells(i, "A")
If IsNumeric(Left(myCell, 1)) Then
Debug.Print myCell; " adding..."
If rowsToDelete Is Nothing Then
Set rowsToDelete = myCell.EntireRow
Else
Set rowsToDelete = Union(rowsToDelete, myCell.EntireRow)
End If
End If
Next i
If Not rowsToDelete Is Nothing Then
rowsToDelete.Delete
End If
End Sub
其思想是向后循环并检查单元格内容的最左边部分是否为数字。如果是数字,则在即时窗口中打印信息并将其删除。这就是您所得到的结果,按F8键,例如逐步:
然后,您可以继续,将要删除的行保存到单个区域,并在末尾仅删除此区域一次。像这个:
Sub RemoveNumbersFromColumnA()
Dim i As Long
Dim wks As Worksheet
Set wks = Worksheets(1)
For i = 10 To 1 Step -1
If IsNumeric(Left(wks.Cells(i, "A"), 1)) Then
Debug.Print wks.Cells(i, "A"); " deleting..."
wks.Cells(i, "A").Delete
End If
Next i
End Sub
Sub RemoveNumbersFromColumnA()
Dim i As Long
Dim myCell As Range
Dim rowsToDelete As Range
For i = 1 To 10
Set myCell = Worksheets(1).Cells(i, "A")
If IsNumeric(Left(myCell, 1)) Then
Debug.Print myCell; " adding..."
If rowsToDelete Is Nothing Then
Set rowsToDelete = myCell.EntireRow
Else
Set rowsToDelete = Union(rowsToDelete, myCell.EntireRow)
End If
End If
Next i
If Not rowsToDelete Is Nothing Then
rowsToDelete.Delete
End If
End Sub
为清楚起见,我假设“变量”和“单元格”的意思是要删除单元格的值,对吗?这听起来可能有点吹毛求疵,但我想确定一下,因为删除Excel中的某个单元格意味着删除整个单元格并用其他单元格替换,通常是将列中的单元格上移,或将行中的单元格向左移。同样,变量也可能是单元格公式中的特定标识符。为清楚起见,我假设“变量”和“单元格”是指要删除单元格的值,对吗?这听起来可能有点吹毛求疵,但我想确定一下,因为删除Excel中的某个单元格意味着删除整个单元格并用其他单元格替换,通常是将列中的单元格上移,或将行中的单元格向左移。同样,变量也可能是单元格公式中特定的标识符。嗨,维蒂亚塔,我真的很感谢你的支持。您提供的宏非常有用。我选择第二个宏是因为它删除整行,而第一个宏不删除。谢谢@RickyDhaliwal-第二个更快更好,但为了从行中删除该行,应将
wks.Cells(i,“A”)
更改为wks.Cells(i,“A”).EntireRow.delete
。无论如何,请考虑将答案标记为被接受,以便将其从未接受的队列中移除。嗨,维蒂亚塔,我真的很感谢你的支持。您提供的宏非常有用。我选择第二个宏是因为它删除整行,而第一个宏不删除。谢谢@RickyDhaliwal-第二个更快更好,但为了从行中删除该行,应将wks.Cells(i,“A”)
更改为wks.Cells(i,“A”).EntireRow.delete
。无论如何,请考虑将答案标记为被接受,以便将其从未接受的队列中移除。