Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何删除“列”中有数字的行;“A”吗;?_Excel_Vba_For Loop_Numeric_Delete Row - Fatal编程技术网

Excel 如何删除“列”中有数字的行;“A”吗;?

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

在列“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)) 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
。无论如何,请考虑将答案标记为被接受,以便将其从未接受的队列中移除。